我正在通过以下pom.xml指令为我的Java jar创建一个清单文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>parser.BulkParser</mainClass>
<classpathPrefix>dependency/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
这会产生以下类型的清单:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: shaashis
Build-Jdk: 1.6.0_21
Main-Class: parser.BulkParser
Class-Path: dependency/commons-configuration-1.6.jar dependency/commons-collections-3.2.1.jar dependency/commons-lang-2.4.jar
这里我想在Class-Path中添加以下类型的字符串:
Class-Path: conf/ dependency/commons-configuration-1.6.jar dependency/commons-collections-3.2.1.jar dependency/commons-lang-2.4.jar
我怎么能通过我的pom.xml做到这一点?
感谢
与Ashish
答案 0 :(得分:14)
Altering The Classpath: Using a Custom Classpath Format是要走的路。
编辑:以上并不完全符合要求。通过检查Archiver源代码,我找到了一种方法来实现这一点。这样做(刚刚在shell中验证):
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
答案 1 :(得分:6)
按如下方式修改我的pom.xml以获得正确的问题解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>parser.BulkParser</mainClass>
<classpathPrefix>dependency/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
这导致我在清单文件中生成'Class-Path'的值。
参考文献: