我想将它打包在一个单独的可执行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依赖关系.