gpt4 book ai didi

maven 程序集在最终的 zip/tar 中包含当前项目 jar

转载 作者:行者123 更新时间:2023-12-03 09:20:12 27 4
gpt4 key购买 nike

我正在使用 maven 程序集插件生成 .tar文件包含其他几个文件,依赖 jars。所有文件都被正确复制到配置 assembly.xml 中的给定文件夹中.

我也想在最终的 tar 文件中包含原始项目 jar,但目前在其中没有看到它。

我发出 assembly:single 时确实收到以下消息目标:

[WARNING] Cannot include project artifact: com.my.newpkg.project1:jar:0.0.3.0; it doesn't have an associated file or directory.



阅读完 SO 后,似乎将以下配置添加到 pom.xml应该添加 jar ,但仍然没有得到预期的结果。

pom.xml 中的配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.my.newpkg.project1.MainClass</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>

assembly.xml 的片段
<formats>
<format>dir</format>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<fileMode>0755</fileMode>
</dependencySet>
</dependencySets>

那么,配置还不正确?还是我在这里遗漏了什么?

我们如何将当前项目的 jar 添加到最终的 tar

最佳答案

<dependencySet>您可以通过说 <useProjectArtifact>false</useProjectArtifact> 来排除当前项目 jar ,但默认情况下它是正确的,所以它应该可以工作。
从警告看来,您似乎需要做mvn package首先,但由于一些内部 maven 问题,如果您执行 mvn package,它将不起作用和 mvn assembly:single在单独的命令中。
如果你这样做,它会起作用mvn package assembly:single在一个命令中。
或者,在您的 pom 中添加 maven-assembly-plugin 并将其绑定(bind)到 'package' 阶段,这样它将在 mvn package 上自动触发:

   <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>tar-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>etc/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>

关于maven 程序集在最终的 zip/tar 中包含当前项目 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14276453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com