Добавление пользовательской строки в манифест Java 'Classpath' через maven pom.xml - PullRequest
5 голосов
/ 10 августа 2011

Я создаю файл манифеста для моего java jar с помощью следующих директив pom.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:

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 ]

14 голосов
/ 10 августа 2011

Изменение пути к классам: использование пользовательского формата пути к классам - это путь.

Редактировать: Выше не совсем то, что нужно.Я нашел способ добиться этого, изучив исходный код Archiver.Это будет делать (только что проверено в оболочке):

<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>
6 голосов
/ 10 августа 2011

Изменил мой 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' в файле манифеста, как я хотел.

Рекомендации:

Записи манифеста

Maven Archiver

...