为带有和不带有maven插件的Maven项目构建jar的区别

时间:2019-04-17 20:06:37

标签: java maven

谁能解释在pom.xml中使用和不使用maven插件为maven项目构建jar的区别

我知道这些插件对于在Maven中创建jar文件很有用。

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.

但是,我可以通过运行'mvn package'命令创建jar,而无需在pom.xml中使用任何插件。这个jar和使用maven-jar-plugin生成的jar有什么区别。

这是我的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 个答案:

答案 0 :(得分:1)

当使用'packaging = jar'时,一个maven项目在引擎盖下使用了'maven-jar-plugin'。假设您遵循Maven标准,这将创建一个jar。因此,您的jar无需自定义。

您可以使用“ maven-jar-plugin”进一步自定义生成的jar,您可以在jar中添加其他文件等。

“ maven-assembly-plugin”允许您使用自定义文件和文件夹来生成tar,zip和其他压缩的工件。

'maven-shade-plugin'允许您创建一个胖jar,其中包含所有必需的3rd party jar和主类。这使您的工件易于部署和执行。