有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过maven pom在java清单“Classpath”中添加自定义字符串。xml

我正在通过以下pom为我的java jar创建清单文件。xml指令:

    <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: conf/ dependency/commons-configuration-1.6.jar dependency/commons-collections-3.2.1.jar dependency/commons-lang-2.4.jar

我如何通过我的pom做到这一点。xml

谢谢

阿什


共 (2) 个答案

  1. # 1 楼答案

    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>
    
  2. # 2 楼答案

    修改了我的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>
    

    这导致在清单文件中生成我想要的“类路径”值

    参考资料:

    Manifest Entries

    Maven Archiver