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

Ash*_*rma 5 java executable-jar pom.xml maven

我通过以下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>
Run Code Online (Sandbox Code Playgroud)

这导致生成以下类型的清单:

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
Run Code Online (Sandbox Code Playgroud)

在这里,我想在Class-Path中添加以下类型的字符串:

Class-Path: conf/ dependency/commons-configuration-1.6.jar dependency/commons-collections-3.2.1.jar dependency/commons-lang-2.4.jar
Run Code Online (Sandbox Code Playgroud)

我怎么能通过我的pom.xml做到这一点?

谢谢

阿希什

Mic*_*l-O 14

改变类路径:使用自定义类路径格式是要走的路.

编辑:以上并不完全符合要求.通过检查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>
Run Code Online (Sandbox Code Playgroud)


Ash*_*rma 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>
Run Code Online (Sandbox Code Playgroud)

这导致在我想要的清单文件中生成'Class-Path'的值.

参考文献:

清单条目

Maven Archiver