Заметки о maven
Переменные окружения
Для работы maven нужны переменные окружения:
- JAVA_HOME
- MAVEN_HOME
- M2_HOME
Инициализация проекта и скачивание плагинов
mvn archetype:generate
Мавен скачает плагины (архетипы проектов), предложит ввести:
- номер архетипа (или оставить дефолтный - quickstart)
- Версию архетипа
- groupId - по соглашению - это имя сайта организации в обратной нотации - com.org.name
- artefactId - название проекта
- version - версию проекта
- package - имя директории, в где будет собран этот аретфакт (директории class и test).
В итоге - у собранного проекта будет название - artefactId-version
и построит структуру директорий, необходимую для проекта.
Плагины попадут в ~/.m2/repository/
Структура директорий проекта maven
Типичный workflow
mvn clean
Очистит проект.
mvn compile
Соберет код проекта и в итоге - создаст директории target/classes/….
mvn test-compile
Соберет код тестов проекта и в итоге - создаст директории target/test-classes/…. mvn test Запустит собранные тесты
mvn install
Собрет jar-файл и положит его в корень директории target. Также - установит его в локальный репозиторий (~/.m2/repository) для использования его в качестве зависимости в других пакетах.
Расширенный workflow
mvn validate
Валидирует проект.
mvn compile
Соберет код проекта и в итоге - создаст директории target/classes/…. mvn test-compile Соберет код тестов проекта и в итоге - создаст директории target/test-classes/…. mvn test Запустит собранные тесты
mvn package
Соберет пакет
mvn intergration-test
Запуск интеграционных тестов.
mvn verify
Проверка пакета
mvn install
Собрет jar-файл и положит его в корень директории target. Также - установит его в локальный репозиторий (~/.m2/repository) для использования его в качестве зависимости в других пакетах.
mvn deploy
Копирует собранный пакет на удаленный репозиторий для дальнейшего использваония в совместной разработке или продакшене.
Выкачать зависимости
Скачать зависимости, указанные в pom-файлике можно так:
mvn dependency:copy-dependencies -DoutputDirectory=yourfoldername -Dhttps.protocols=TLSv1.2
Скачать исходники зависимостей:
mvn dependency:copy-dependencies -Dclassifier=sources -DoutputDirectory=yourfoldername -Dhttps.protocols=TLSv1.2
Чтобы скачать зависимости через proxy в файлик конфигурации maven (conf/settings.xml) нужно добавить такое:
<settings> <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host>PUT-YOUR-PROXY-NAME</host> <port>PUT-YOUR-PORT-NUMBER</port> <username>proxyuser</username> <password>somepassword</password> <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts> </proxy> </proxies> </settings>
Discussion