Разница между созданием jar для проекта maven с плагинами maven и без них

#java #maven

#java #maven

Вопрос:

Кто-нибудь может объяснить разницу между созданием jar для проекта maven с плагинами maven и без них в pom.xml

Я знаю, что эти плагины полезны при создании файлов jar в maven.

 maven-jar-plugin builds jar
maven-assembly-plugin - builds jar with dependencies, 
maven-shade-plugin - creates a standalone jar with resolved dependencies and resolves the conflicts between resource files that have the same name across the jars.
 

Однако я могу создать jar, запустив команду «mvn package» без использования какого-либо плагина в моем pom.xml . В чем разница между этим jar и тем, который создан с использованием maven-jar-plugin.

Вот мой pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Demo</groupId>
    <artifactId>Demo</artifactId>
    <name>test</name>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

</project>
 

Ответ №1:

Проект maven при использовании ‘packaging= jar’ использует ‘maven-jar-plugin’ под капотом. Это создает jar, предполагая, что вы следуете стандартам maven. Следовательно, ваш jar без настройки.

Вы можете дополнительно настроить сгенерированный jar с помощью «maven-jar-plugin», Куда вы можете включить дополнительные файлы и т. Д. В jar.

‘maven-assembly-plugin’ позволяет создавать tar, zip и другие сжатые артефакты с пользовательскими файлами и папками.

‘maven-shade-plugin’ позволяет вам создавать fat jar, который содержит все необходимые сторонние jar и основной класс. Это делает ваш артефакт легко развертываемым и исполняемым.