【发布时间】:2014-11-04 21:51:45
【问题描述】:
我正在尝试使用 Assembly 插件来包含依赖项以及
这是我的汇编插件
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>create-executable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies
</descriptorRef>
</descriptorRefs>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>com.sarm.myproject.XMLParser.LPUnMarshaller</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
这是我的 assembly.xml 描述符,我将 id 设置为与 descritpor ref 相同,因为它正在为此描述符创建不同的 jar。所以我有两个描述符,一个是带有依赖关系的 jar 描述符 ref,一个是下面的描述符,在这种情况下,发生的事情是它创建了两个 jar,而第二个 jar 覆盖了前一个 jar。怎么可能将这两个包含在同一个 jar 中。
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>${basedir}</directory>
<includes>
<include>*.xml</include>
</includes>
<excludes>
<exclude>30000dests.xml</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/test</directory>
<includes>
<include>*.xml</include>
</includes>
</fileSet>
</fileSets>
</assembly>
编辑:我尝试了一些其他方法,并且我发现如果我使用 assembly.xml 作为描述符,则会在创建的任何其他默认 jar 旁边创建一个新 jar。所以我最终得到了两个罐子。默认 jar 是一个可执行文件,就像配置了 jar 插件一样。即使程序集插件配置为具有带有我的主类名称的 manifest.mf,通过 assmbly.xml 创建的 jar 也是不可执行的,并且有一个包含我的项目名称的文件夹,其中包含可执行 jar。
我使用 mvn clean install 来构建我的项目和 jar 文件。
【问题讨论】: