在我的 pom.xml
中,我使用maven-assembly-plugin在运行"mvn clean install"时创建一个可执行的jar-with-dependencies . 现在它首先创建非可执行文件"name-version.jar",之后创建"name-version-jar-with-dependencies.jar" .
我可以以某种方式配置 pom.xml
,以便它不会创建不可执行的JAR文件吗?
目前我使用<appendAssemblyId> false </ appendAssemblyId>所以它只是覆盖了第一个文件......
此外,我得到了几个“...已添加,跳过”消息 . 我可以以某种方式阻止他们吗?
这是我的 pom.xml
中的maven-assembly-plugin定义:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>my.main.class</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
5 回答
我想我已经弄清楚如何做到这一点 . 您必须离开jar,否则您将丢失编译器和资源复制,以及构建您需要的jar所需的所有其他内容 .
我的解决方案基本上涉及欺骗maven,所以我想要提防的是,很可能在将来的版本中这不会起作用......
请注意,在列出的构建配置中,maven-assembly-plugin和构建本身的finalName匹配 . 另请注意
<appendAssemblyId>false</appendAssemblyId>
. 如果这样做,构建和程序集jar的输出文件名将完全匹配 . Maven肯定会警告你,但是会把你想要的jar放在你的目标目录和你的本地存储库中 .以下是此项目中“mvn clean install”的输出,以及目标目录和本地存储库中jar的jar -tvf:
我使用maven-jar-plugin和像这样的maven-assembly-plugin的单一目标来使用它
无论如何,最重要的是告诉maven不使用maven-jar-plugin的这种配置生成默认jar
你可以尝试设置为pom . 这将阻止创建
default
jar .也许我错过了一些关于你的问题,但下面的代码让我成为一个可执行的jar:这是你在找什么?
您可以在下面使用此构建并使用以下命令进行编译:
mvn clean compile assembly:single