我想将它打包在一个单独的可执行jar中进行分发.我需要一个可执行文件,像main.jar和所有的依赖项在libs / *.jar中
如何使maven可执行文件jar没有预先包含在其中依赖库?
在How can I create an executable JAR with dependencies using Maven?年10月1日10时10分,有一个说明
安德烈·阿龙森(AndréAronsen),但是那个人根本不起作用(s.a.descriptorRef没有设置失败).
解决方法
你可以在一定程度上实现这一点.
首先,您将通过适当配置maven jar plugin创建一个executable jar.
然后,您将使用maven程序集插件创建一个jar依赖关系,不包括项目jar.为此,您将创建一个描述符文件,如src / main / assembly / descriptor.xml,像这样.
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">>
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
在这样的项目中使用它.
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/descriptor.xml</descriptor>
</descriptors>
</configuration>
[...]
</project>
您将最终获得两个jar – 一个由您的项目创建的可执行jar,另一个由程序集插件创建的jar依赖关系.
