Самый простой способ добавить атрибут в манифест jar в Maven
С момента последнего обновления Java мне нужно пометить манифест моих апплетов с помощью Trusted-Library
атрибут, чтобы избежать всплывающего предупреждения, когда javascript взаимодействует с апплетом. (см. http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/mixed_code.html)
Manifest-Version: 1.0
Trusted-Library: true
Created-By: 1.6.0-internal (Sun Microsystems Inc.)
Я никогда не делал таких вещей раньше, есть ли плагин, который позволяет сделать это бесшовным способом или я должен написать его или использовать плагин ant?
опарникы уже собраны и доступно через зависимости, скопированные в целевую папку для подписи во время упаковки. Я использую Maven 3
4 ответов
вы можете сделать это с помощью тега Maven Jar плагин во время создания файла JAR. Добавьте к вашему pom.xml
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Trusted-Library>true</Trusted-Library>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>/path/to/testkeystore</keystore>
<alias>myalias</alias>
<storepass>test123</storepass>
</configuration>
</plugin>
основные атрибуты, указанные в спецификация файла JAR доступны как выделенные элементы, например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Trusted-Library>true</Trusted-Library>
</manifestEntries>
</archive>
</configuration>
</plugin>
посмотреть Maven Архиватор Ссылка для получения дополнительной информации.
чтобы изменить манифест внутри существующего файла jar, создайте текстовый файл, например mymanifest.mf
который содержит необходимые свойства:
Trusted-Library: true
вы можете добавить атрибуты этого файла в существующую банку, выполнив следующую команду:
jar -cfm file-to-be-modified.jar mymanifest.mf
это изменит manifest.mf
внутри данной банки.
в конце я просто использовал плагин antrun, как показано ниже, antcontrib используется для цикла над списком банок:
build-trusted.в XML
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is a wrapper for all the other build files. -->
<project basedir="." name="project_name">
<target name="addTrustedLibraryProperty">
<jar file="${jarFile}" update="true">
<manifest>
<attribute name="Trusted-Library" value="true" />
</manifest>
</jar>
</target>
<target name="addTrustedLibraries">
<ac:foreach target="addTrustedLibraryProperty" param="jarFile" xmlns:ac="antlib:net.sf.antcontrib">
<path>
<fileset dir="target/lib" includes="**/*.jar" />
</path>
</ac:foreach>
</target>
</project>
В пом
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>add-trusted-library-attribute</id>
<phase>package</phase>
<configuration>
<target>
<ant antfile="${basedir}/build-trusted.xml">
<target name="addTrustedLibraries" />
</ant>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b3</version>
<exclusions>
<exclusion>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
на сегодняшний день мне нужно добавить некоторые атрибуты манифеста для подписанного апплета Java. Я нашел это очень простым с Maven-jar-plugin. Просто поместите необходимые атрибуты в src/main/resources/META-INF / MANIFEST.MF:
Permissions: all-permissions
затем просто настройте плагин Maven-jar-plugin:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
и вот результат:
Manifest-Version: 1.0
Build-Jdk: 1.7.0_51
Built-By: bart
Permissions: all-permissions
Created-By: Apache Maven 3.0.5
Archiver-Version: Plexus Archiver
Name: name/prokop/bart/fps/util/BartDate.class
SHA-256-Digest: XatHlhiWAK3ArocdOcVPCS3ftOcokJNlUeRhKPTHUKs=
Я рассматриваю использование webstart-maven-плагин правильный выбор здесь. Я имею в виду, что есть ошибки, есть вещи, которые вам могут понадобиться, чтобы исправить себя, но если вы в порядке с этим, один плагин может сделать для вас довольно много без некоторых обходных путей.
для конкретной проблемы есть отчет об ошибке с включенным рабочим патчем. Смотри:http://jira.codehaus.org/browse/MWEBSTART-213
обновление:
исправить входит в релиз:1.0-beta-4
.
идем в настройки:
<updatedManifestEntries>
<Permissions>all-permissions</Permissions>
<Codebase>*</Codebase>
....
</updatedManifestEntries>
должен сделать работу