Как настроить файл манифеста jar-файла с помощью подключаемого модуля maven?

1

как я могу настроить содержимое файла манифеста, который включен в файл Jar? Теперь я использую плагин сборки maven для настройки файла jar. Я определил некоторые теги XML, которые включают в себя различные значения pom.xml.

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>
                        jar-with-dependencies
                    </descriptorRef>
                </descriptorRefs>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifestEntries>                                   
                        <Source-JDK>${source.jdk}</Source-JDK>
                        <Target-JDK>${target.jdk}</Target-JDK>
                        <GroupId.ArtifactId>${project.groupId}.${project.artifactId}</GroupId.ArtifactId>
                        <Project.Version>${project.version}</Project.Version>                           
                        <Project.Build.SourceEncoding>UTF-8</Project.Build.SourceEncoding>  
                        <Maven.Build.Timestamp>${maven.build.timestamp}</Maven.Build.Timestamp>
                    </manifestEntries>
                    <manifest>                      
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>${project.groupId}.myMainClass</mainClass>
                    </manifest>
                </archive>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
            <executions>
                <execution>
                    <id>assembly-jar-Id</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

В этом решении файл манифеста моего файла jar включает в себя все теги, которые важны для меня. Но если я использую один из этих конкретных тегов, я получаю сообщение об ошибке, подобное этому при выполнении моего файла jar:

 Error: An unexpected error occurred while trying to open file ./myJarFile.jar

Я могу решить эту проблему, если я удалю все теги в теге xmlEventries.

  • 0
    Почему вы используете maven-assembly-plugin, а не maven-jar-plugin? Я предполагаю, что у вас уже есть проект maven, и вы хотели бы добавить эту информацию в файл MANIFEST.MF?
Теги:
maven
jar
maven-assembly-plugin

1 ответ

1
Лучший ответ

Это может быть связано с использованием недопустимых символов в именах атрибутов манифеста. Допустимые символы: [0-9a-zA-Z_-]. Это обсуждается в JavaDocs для класса Attributes:

http://docs.oracle.com/javase/7/docs/api/java/util/jar/Attributes.html

Также см. Спецификацию файла jar, особенно спецификацию грамматики для headerchar:

http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Name-Value_pairs_and_Sections

Некоторые из ваших имен атрибутов не соответствуют указанному шаблону, например GroupId.ArtifactId. Я рекомендую тестировать удаление каждого атрибута один за другим (или изменять имена в соответствии с спецификацией), чтобы подтвердить, вызвали ли определенные имена атрибутов проблему.

  • 0
    Отличный ответ, спасибо! У вас есть идея, как можно отформатировать расположение атрибутов в файле манифеста, используя плагин сборки maven? Теперь все атрибуты в несортированном порядке
  • 0
    @MaikHansen, извините, нет, я не знаю, как контролировать порядок атрибутов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню