首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven插件之间的区别(程序集插件、jar插件、阴影插件)

maven插件之间的区别(程序集插件、jar插件、阴影插件)
EN

Stack Overflow用户
提问于 2016-07-24 02:49:38
回答 2查看 25.7K关注 0票数 89

我是maven的初学者,现在我对这些maven插件之间的区别感到困惑。这些都是创建jar文件吗?现在我的问题是

  1. 在每个插件中创建的jar之间的区别是什么。(组装插件,jar插件,阴影插件)
  2. 每个插件的用途。(程序集,jar插件,阴影插件)
  3. 我知道,即使没有指定任何这些插件,一旦输入mvn包,也会有一个jar输出。没有这些插件的输出jar与这些插件的输出jar有什么区别?提亚
EN

回答 2

Stack Overflow用户

发布于 2017-04-17 01:36:21

  1. maven-jar-plugin:这个插件提供了构建和签名JAR的能力。但是它只是编译了src/main/javasrc/main/resources/下的java文件。它不包括依赖项JAR文件。
  2. maven-assembly-plugin:这个插件将所有依赖JAR提取到原始类中,并将它们分组。它还可以通过指定主类来构建可执行的JAR。它只在依赖关系较少的项目中工作;对于具有许多依赖项的大型项目,它将导致Java类名发生冲突。
  3. maven-shade-plugin:它将所有依赖项打包到一个uber-JAR中。它还可以通过指定主类来构建可执行的JAR。这个插件特别有用,因为它合并了特定文件的内容,而不是用重新定位类覆盖它们。当有跨JAR具有相同名称的资源文件并且插件试图将所有资源文件打包在一起时,就需要这样做。

参考:比较:maven插件罐,组装,遮阳

票数 118
EN

Stack Overflow用户

发布于 2016-07-25 00:16:34

Jar插件

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

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-jar-plugin

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

从当前项目构建一个JAR。

顺便提一句,在一个打包为jar的项目上执行jar显示,这个插件是自动配置的,并在package阶段执行。

代码语言:javascript
复制
  <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目标之外,我们还有single目标。

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-assembly-plugin

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

当您想要交付比项目工件(JAR、WAR等)更多的内容时,您可以使用程序集插件,但是配置在另一个文件中。

遮阳插件

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

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-shade-plugin

执行阴影委托给Shader组件的Mojo。

如果您想要生成一个uber- JAR,它是JAR中包含所有传递依赖项的工件,那么您主要希望使用这个插件。

最基本的是,如果您正在构建一个库,您将坚持默认的JAR插件。如果你正在构建一个应用程序,你可以考虑使用遮阳插件,尽管对我来说,它是一种快速和肮脏。如果uber-jar不是您的口味,或者发行版无法适应单个JAR (外部配置、本机依赖等)那么你应该选择组装插件。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38548271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档