gpt4 book ai didi

java - maven-dependency-plugin 在jar-with-dependencies.jar 文件中生成重复文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:46 25 4
gpt4 key购买 nike

我正在用 maven 创建一个独立的 java 应用程序,我在 jar 文件中包含了 ma​​ven-dependecy-plugin 的依赖项,如下所示:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-my-bundle</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>

</configuration>
</execution>
</executions>
</plugin>

这包括 lib 文件夹中生成的 jar 文件中的依赖项,并且 jar 可以正常运行,但问题出在另一个生成的 jar 文件 appname-1.0-jar-with-dependencies.jar.

问题:我不确定这是否是一个问题,但我注意到在生成的 appname-1.0-jar-with-dependencies.jar 的目标文件夹中,它包含重复的应用程序文件,例如:

  1. 所有的sql、属性文件、xml文件都存在两次。
  2. 所有java类.class文件都存在两次。
  3. 有很多与依赖项相关的 overview.html 和 license.txt 文件。

我不确定这是否合适,我还需要有人为我澄清这个生成的 jar 文件的重要性,因为我不熟悉这个插件。

请指教,谢谢。

最佳答案

既然你提到了jar-with-dependencies ,我假设您使用的是 maven assembly plugin将您的项目工件与依赖的 jar 一起组装到一个 jar 中。

我怀疑您的项目工件两次进入 jar-with-dependencies - 由于 dependencySet 的属性 useProjectArtifact默认情况下为 true。您可以在程序集描述符中将此属性设置为 true,看看它是否解决了您的问题。

在上面的特定情况下,maven 依赖插件似乎没有做任何有用的事情。 maven assembly 插件会根据配置自动将其所有依赖项打包到一个分发包中。

但请注意classpath issues如果您创建一个可执行的 jar-with-dependencies。您可能需要创建一个 ziptar.gz

上面使用的配置是默认配置,不允许自定义。您可能想要使用程序集描述 rune 件,您可以在其中设置前面提到的属性或其他选项。

关于java - maven-dependency-plugin 在jar-with-dependencies.jar 文件中生成重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610414/

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