Mah*_*leh 5 java maven-2 packaging jar maven-dependency-plugin
我正在使用maven创建一个独立的Java应用程序,我使用maven-dependecy-plugin将依赖项包含在jar文件中,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
这包括lib文件夹中生成的jar文件中的依赖项,并且jar运行并且工作正常,但问题出在另一个生成的jar文件中appname-1.0-jar-with-dependencies.jar.
问题:我不确定这是否是一个问题,但我注意到在生成的目标文件夹中appname-1.0-jar-with-dependencies.jar,它包含重复的应用程序文件,如:
我不确定这是否正确,我还需要有人为我澄清这个生成的jar文件的重要性,因为我不熟悉这个插件.
请指教,谢谢.
由于您提到了jar-with-dependencies,我假设您正在使用Maven 程序集插件将项目工件与依赖的 jar 一起组装到一个 jar 中。
我怀疑您的项目工件两次进入 jar-with-dependencies - 由于dependencySetuseProjectArtifact的属性默认为。您可以在程序集描述符中将此属性设置为 true 并查看它是否解决您的问题。true
在上面的具体情况下,maven 依赖插件似乎没有做任何有用的事情。maven 程序集插件会根据配置自动将其所有依赖项打包到单个发行版中。
但如果您创建带有依赖项的可执行 jar,请注意类路径问题。您可能想创建一个ziportar.gz来代替。
上面使用的配置是默认的,不允许自定义。您可能想要使用程序集描述符文件,您可以在其中设置前面提到的属性或其他选项。
| 归档时间: |
|
| 查看次数: |
5901 次 |
| 最近记录: |