【发布时间】:2020-04-10 22:55:24
【问题描述】:
下午好,我想使用Maven Shade plugin 来打包jar 文件。但是每个构建都会创建 2 个jar-files。
为什么?以及如何使 1 个jar-file 打包?
我的pom.xml:
<groupId>test</groupId>
<artifactId>task2_maven</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>test.run.Runner</Main-Class>
<Build-Number>1</Build-Number>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的输出:
请帮忙,让我知道做错了什么。
【问题讨论】:
-
@Stewart 不,我还有一个问题
-
我认为(从内存中)以 original 为前缀的 jar 是没有库的 jar,即您的代码通常会被编译/jared,第二个 jar 是带有库的 jar,这是正常行为默认值行为。
-
正如@jirka,pinkas 在他的回答中所说,第一个是由 maven 编译的(我认为是 compile 或 jar 插件),第二个是阴影,你最好的办法是查看配置mavens compile/jar pulgin,但老实说,我会忽略它作为传递构建工件
-
我不明白为什么不这样做。只要您将删除作为最终操作,它应该不会导致任何问题,尽管我不知道您会使用哪个插件。
-
您可以使用 maven-antrun-plugin 将其删除:stackoverflow.com/questions/18637626/… 只需将其设置为在打包阶段后运行即可。
标签: java maven jar pom.xml executable-jar