我有以下自定义程序集:
<assembly>
<id>full</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
以下配置部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>com.example.MyExample</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>./lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
根据有关maven程序集插件的文档,这应该将一个类路径项添加到清单文件中,但它不起作用。如果我使用已弃用的程序集目标而不是单个目标,它确实有用。
我注意到有人提到存档部分只有jar格式,但这就是我正在使用的。
当他们弃用程序集:汇编时,他们是否定义了一种正确执行此操作的新方法?我真的不喜欢使用已弃用的功能,但如果它们破坏了工作方式并且没有正确记录它,我真的不知道如何避免这种情况。
有没有人有任何关于如何正确执行此操作的示例?
答案 0 :(得分:4)
这不是一个很好用的程序集插件。 Java没有jars-in-jars。您可以使用maven-jar-plugin的配置选项将类路径添加到主jar的清单中,然后使用程序集插件来收集依赖项,然后在zip或tarball中放在主jar旁边。
http://maven.apache.org/shared/maven-archiver/examples/classpath.html
答案 1 :(得分:3)
尝试将@company
更新为2.5或更高版本。
清单文件中意外缺少条目Class-Path似乎是由错误MASSEMBLY-576引起的。该错误已在插件的2.5版本中修复(2014年10月26日发布)。
答案 2 :(得分:2)
你应该使用maven jar插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>main class</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>