0

这是我的“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 以第一个 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>
4

2 回答 2

2

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

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

于 2012-09-28T20:05:41.583 回答
2

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

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

于 2012-09-28T20:05:53.443 回答