【问题标题】:Maven is generating 2 JARs when I only want one当我只想要一个时,Maven 正在生成 2 个 JAR
【发布时间】:2012-09-28 20:02:04
【问题描述】:

这是我的“mvn package”命令的一些输出:

[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ my-project ---
[INFO] Building jar: /Users/sfrazer/projects/my-project/target/my-project-0.0.1.jar
[INFO] 
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (jar-with-dependencies) @ my-project ---
[INFO] Building jar: /Users/sfrazer/projects/my-project/target/my-project-0.0.1-jar-with-dependencies.jar

第二个罐子是我指定要构建的正确罐子,但我不知道为什么要创建第一个罐子。所以我有两个问题:

1) 为什么要创建第一个 JAR?

2) 如何使第二个 JAR 的命名方式与第一个一样?

pom.xml 很长,但这里是构建第二个 JAR 的相关部分:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>my.package.App</mainClass>
      </manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

【问题讨论】:

    标签: java maven


    【解决方案1】:

    因为 jar-with-dependencies 执行被定义为额外执行,而不是替换常规 jar 目标,后者是常规包或安装运行的一部分。

    有些人试图在this question 中禁用它,但一般来说,当制作一个包含所有依赖项的 jar 时,“普通 jar”只是与它一起打包/保持不变。

    【讨论】:

    • 说得有道理,我一定会把它留在那里。谢谢!
    【解决方案2】:

    my-project-0.0.1.jar 的创建是因为 maven-jar-plugin:jar 自动绑定到具有 jar 打包的项目的 package 阶段。

    禁用它是个坏主意,因为其他依赖于 my-project 工件的项目会希望包含一个仅 my-project 的 JAR,而不是包含所有依赖项的超级 jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-11
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多