通过maven pom.xml在java清单'Classpath'中添加自定义字符串

时间:2011-08-10 07:58:16

标签: java maven executable-jar pom.xml

我正在通过以下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

2 个答案:

答案 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'的值。

参考文献:

Manifest Entries

Maven Archiver