Как настроить файл манифеста jar-файла с помощью подключаемого модуля maven?
Как я могу настроить содержимое файла манифеста, который включен в файл 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
Я могу решить эту проблему, если удаляю все определенные теги в теге xml "manifestEntries".
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
Некоторые из имен ваших атрибутов не соответствуют указанному шаблону, например: GroupId.ArtifactId
, Я рекомендую протестировать удаление каждого атрибута один за другим (или изменить имена в соответствии со спецификацией), чтобы подтвердить, являются ли конкретные имена атрибутов причиной проблемы.