Apache Maven - фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах pom.xml
Некоторые библиотеки добавляют необходимые им зависимости. Рекомендуется добавить все эти зависимости самостоятельно. Так как если библиотека не видит явной зависимости в pom.xml, она будет добавлена как неявная зависимость для новой библиотеки:
Maven использует модель определённых фаз (phase), к которым присоединяются определённые "цели" (goals).
Обновление зависимостей
mvn dependency:resolve
Создание: <properties> <jxl.version>2.6.12</jxl.version> </properties> Использование: <version>${jxl.version}</version>
Если несколько зависимостей использует зависимости на одну библиотеку с разными версиями. Для устранения дублирования кода нужно исключить обычно более старую версию.
Для удаления зависимых библиотек, которые вы не хотите нужно использовать 'exclusions' в блоке 'dependencies'.
Пример:
<exclusions> <exclusion> <artifactId>servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> </exclusions>
Scope - указывает область действия(этап жизненного цикла проекта), в котором эта зависимость будет доступна.
Использование RELEASE или LATEST в указании версий, не рекомендуется. Так plugin который отвечает за это не всегда работает исправно. Необходимо указывать конкретную версию.
Если говорить в целом, то Maven – это фреймворк, который выполняет плагины. В этом фреймворке каждая задача, по сути своей, выполняется с помощью плагинов.
Maven использует JAVA 5. Для plugin можно указать версию в настройках.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
Плагин для сборки проекта в JAR файл, но без зависимостей.
Плагин аналогичен с "jar" плагином, но также добавляет все необходимые зависимости.