提问者:小点点

maven-plugin、maven-plugin和maven-shad-plugin之间jar区别?


我是maven的初学者,现在我对以下3个Maven插件之间的区别感到困惑:

  • maven-汇编-插件
  • maven-jar-插件
  • maven-shad-plugin

所有这些都创建jar文件吗?如果是,它们创建的Jar文件之间有什么区别?每个插件的目的是什么,应该在什么上下文中使用它们?


共2个答案

匿名用户

    null

参考:比较:maven插件jar,汇编,阴影

匿名用户

Jar插件

让我们看看下面的命令能告诉我们什么。

mvn帮助:描述-Dplugin=org. apache.maven.plugins:maven-jar-plugin

它有3个目标,helpjartest-jar。我相信您最感兴趣的是jar目标,根据描述,它执行以下操作:

从当前项目构建一个JAR。

附带说明一下,在打包设置为jar的项目上执行mvn help: effity-pom,表明该插件是自动配置的,并在阶段执行。

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <id>default-jar</id>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

汇编插件

这个有不同的目的。它有8个目标,但其中6个已被弃用。因此,除了help目标之外,这给我们留下了单个目标。

mvn帮助:描述-Dplugin=org. apache.maven.plugins:maven-汇编插件

从程序集描述符组装应用程序包或发行版。此目标适用于绑定到生命周期或直接从命令行调用(前提是所有必需的文件在构建开始之前可用,或者由命令行上在此之前指定的另一个目标生成)。

当您想要交付的不仅仅是项目的工件(JAR、WAR等)时,您可以使用程序集插件,但配置位于另一个文件中。

阴影插件

对主要目标的描述有点令人失望。

mvn帮助:描述-Dplugin=org. apache.maven.plugins:maven-shad-plugin

Mojo执行着色委托给着色器组件。

如果您想生成一个超级jar,您最想使用这个插件,它是您在JAR中的工件,其中包含所有传递依赖项。

基本上,如果你正在构建一个库,你将坚持使用默认的JAR插件。如果你正在构建一个应用程序,你可以考虑使用阴影插件,尽管对我来说,它有点快速和肮脏。如果超级jar不是你的口味,或者发行版不适合单个JAR(外部配置、本地依赖项等),那么你应该选择汇编插件。