Maven 使用自定义程序集描述符将类路径添加到清单
我有以下自定义程序集:Maven 使用自定义程序集描述符将类路径添加到清单,maven,classpath,maven-3,maven-assembly-plugin,Maven,Classpath,Maven 3,Maven Assembly Plugin,我有以下自定义程序集: <assembly> <id>full</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet&g
<assembly>
<id>full</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
满的
罐子
假的
${project.build.outputDirectory}
/
以及以下配置部分:
<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>
org.apache.maven.plugins
maven汇编插件
src/main/assembly/assembly.xml
com.example.MyExample
真的
/lib/
包裹
单一的
根据maven assembly插件的文档,这应该向清单文件添加一个类路径项,但是它不起作用。如果我使用不推荐使用的程序集目标而不是单一目标,那么它确实有效 我注意到有人提到归档部分只提供jar格式,但这就是我正在使用的 当他们弃用assembly:assembly时,他们是否定义了正确执行此操作的新方法?我真的不喜欢使用不推荐的功能,但是如果它们破坏了工作方式,并且没有正确地记录它,我真的不知道如何避免这种情况
有没有人能举例说明如何正确地执行此操作?这不是汇编插件的好用法。Java不在罐子中做罐子。您可以使用maven jar插件的配置选项将类路径添加到主jar的清单中,然后使用汇编插件收集依赖项,然后将其放在zip或tarball中的主jar旁边
您应该使用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>
org.apache.maven.plugins
maven jar插件
主类
真的
解放党/
尝试将maven程序集插件更新到2.5版或更高版本
清单文件中意外缺少条目类路径似乎是由错误引起的。该漏洞已在插件的2.5版(2014年10月26日发布)中修复。此后,我从jar中删除了依赖项,并将它们放在jar旁边的lib文件夹中。然而,问题仍然存在。程序集插件未按指定添加类路径。不应该这样做。jar插件有这个任务。根据汇编插件的文档,如果你告诉它添加类路径,它就会这样做。它适用于现在不推荐使用的其他目标。检查docs@bmargulies胖罐子呢,它将所有依赖项打包在一起?这不是问题的全部吗?好的,这就清楚了。我听说过一个Jar,但没有意识到没有一个Jar这是不可能的。没有帮助,升级到2.5的类路径仍然缺失:(