这是我的'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
第二个jar是我指定构建的正确的jar,但我不知道为什么要创建第一个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>
答案 0 :(得分:2)
因为jar-with-dependencies执行被定义为额外的执行,而不是常规jar目标的替换,这是常规包或安装运行的一部分。
有些人试图在this question中禁用它,但一般来说,当制作一个包含maven所有依赖项的jar时,“普通jar”只是与它一起打包/保持不变。
答案 1 :(得分:2)
my-project-0.0.1.jar
已创建,因为对于maven-jar-plugin:jar
打包的项目,package
会自动绑定到jar
阶段。
禁用它是一个坏主意,因为依赖于my-project
工件的其他项目希望包含仅my-project
的JAR,而不是包含所有依赖项的超级jar。