JNLP 사양에 따르면 JNLP 파일 자체는 JNLP 응용 프로그램의 기본 항아리 (서명해야 함)에 포함하여 서명 할 수 있습니다 (선택 사항). 누구든지 maven-webstart-plugin을 만들 수 있는지 알고 있습니까?maven-webstart-plugin이 JNLP 파일 자체에 서명 할 수 있습니까?
3
A
답변
4
3
JNLP 서명 (자동 생성 APPLICATION.JNLP 또는 APPLICATION_TEMPLATE.JNLP)은 여러 메이븐 플러그인의 구성으로 수행 할 수 있습니다. 일반적으로 webstart-maven-plugin은 maven 모듈에 artifact (예 : zip 파일) 패키징과 같은 완벽한 작업을 수행합니다.
A) APPLICATION.JNLP 생성을위한 :
- 이 JNLP를 생성하고 디렉토리/대상에 매니페스트 항목을 포함하여 모든 라이브러리 ( 갱신)에 서명 JNLP 서명을 할 수있는 열쇠는 여러 단계로이 작업을 분할하는 것입니다 Webstart를-받는다는 - 플러그인
- 사본 & 이름 바꾸기 jnlp 파일에서/목표/JNLP 디렉토리
- repeately truezip - 받는다는 - 플러그인 대상/JNLP/main.jar의/JNLP-INF는/APPLICATION.JNLP 에와/JNLP target/jnlp/ma의 main.jar 파일에 서명하십시오. in.jar with maven-jarsigner-plugin
- 패키지/대상/jnlp 예 : 예 : APPLICATION_TEMPLATE.JNLP 발생 용 받는다는 전쟁 - 플러그인 또는 받는다는 어셈블리 - 플러그인
B) (포인트 1 및 2는 이전 단계에서 다르다)과 : JNLP :
- 모두를 생성 APPLICATION_TEMPLATE.JNLP는 대상에 /target/jnlp/APPLICATION_TEMPLATE.JNLP에서 Webstart를-받는다는 - 플러그인 디렉토리 /대상/JNLP에
- 이동 APPLICATION_TEMPLATE.JNLP 파일 (매니페스트 항목 업데이트를 포함하여) 모든 라이브러리에 서명/JNLP/main.jar/JNLP-INF/APPLICATION_TEMPLATE truezip - 받는다는 - 플러그인은 .jnlp는
- repeately 예를 아티팩트
- 패키지/대상/JNLP 디렉토리 받는다는-jarsigner의-플러그인 대상/JNLP/main.jar의에서 main.jar의 파일에 서명 받는다는 전쟁 - 플러그인 또는 받는다는 - 조립 플러그인
주 1 : main.jar의 파일 및 (단계 1)를 두 번 서명 3))이 한 번만 모든 항아리에 서명 비교 오버 헤드입니다 단계 3)에서 maven-jarsigner-plugin으로. 그러나 webstart-maven-plugin은 구성된 서명으로 만 매니페스트 파일 (권한 헤더 포함)을 업데이트하므로이 방법이 필요합니다.
참고 2 :이 접근법은 webstart 응용 프로그램이 여러 빌드 프로파일을 가지고있을 때 매우 잘 작동합니다. APPLICATION.JNLP 또는 APPLICATION_TEMPLATE.JNLP가 프로파일을 기반으로 자동 생성되기 때문입니다.
주 3 :;
아래는 JNLP 서명의 두 가지 유형에 대한 몇 가지의 pom.xml 부품입니다)가 개발하고이 방법을 테스트하기 위해 나에게 1 일의 절반 이상 소요는 희망이 당신의 인생을 더 쉽게 .
) 응용 프로그램.JNLP 생성 :
<project ....>
...
<build>
<plugins>
<plugin>
<!-- Step 1) your obvious configuration, also with signing,
assume that generated jnlp file has name: launch.jnlp -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-jnlp-and-sign-libs</id>
<phase>generate-resources</phase>
<goals>
<goal>jnlp-inline</goal>
</goals>
...
</execution>
</executions>
...
</plugin>
<plugin>
<!-- Step 2) copy & rename of jnlp to APPLICATION_JNLP in main.jar -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>truezip-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>copy-jnlp-template</id>
<goals>
<goal>copy</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<files>
<file>
<source>${project.build.directory}/jnlp/launch.jnlp</source>
<outputDirectory>${project.build.directory}/jnlp/main.jar/JNLP-INF</outputDirectory>
<destName>APPLICATION.JNLP</destName>
</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- Step 3) repeat signing of main.jar -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<phase>prepare-package</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<archiveDirectory>${project.build.directory}/jnlp</archiveDirectory>
<includes>
<include>main.jar</include>
</includes>
<keystore>...</keystore>
<storepass>...</storepass>
<alias>...</alias>
<verbose>true</verbose>
</configuration>
</plugin>
<plugin>
<!-- Step 4) custom packaging -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
...
<webResources>
<resource>
<directory>${project.build.directory}/jnlp</directory>
</resource>
...
</webResources>
...
</configuration>
</plugin>
</build>
</project>
B) APPLICATION_TEMPLATE.JNLP 생성을위한 :
<project ....>
...
<build>
<plugins>
<plugin>
<!-- Step 1) your obvious configuration + added one new execution
for APPLICATION_TEMPLATE.jnlp file generation from template stored
in /templates/APPLICATION_TEMPLATE.jnlp dir -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<executions>
<execution>
<!-- This is new execution block, don't be afraid,
inspite of multiple executions
signing and manifest update is performed only once -->
<id>generate-jnlp-template-for-signing</id>
<phase>generate-resources</phase>
<goals>
<goal>jnlp-inline</goal>
</goals>
<configuration>
<jnlp>
<inputTemplateResourcePath>${project.basedir}/templates
</inputTemplateResourcePath>
<inputTemplate>APPLICATION_TEMPLATE.jnlp</inputTemplate>
<outputFile>APPLICATION_TEMPLATE.jnlp</outputFile>
<mainClass>...</mainClass>
</jnlp>
</configuration>
</execution>
<execution>
<id>generate-jnlp-and-sign-libs</id>
<phase>generate-resources</phase>
<goals>
<goal>jnlp-inline</goal>
</goals>
<configuration>
<jnlp>
<!-- JNLP settings from your obvious configuration -->
...
</jnlp>
</configuration>
...
</execution>
</executions>
...
</plugin>
<plugin>
<!-- Step 2) move to APPLICATION_TEMPLATE from /target/jnlp
to target/jnlp/main.jar/JNLP-INF dir -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>truezip-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>move-jnlp-template</id>
<goals>
<goal>move</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<from>${project.build.directory}/jnlp/APPLICATION_TEMPLATE.jnlp
</from>
<to>${project.build.directory}/jnlp/lib/main.jar/JNLP-INF/APPLICATION_TEMPLATE.jnlp
</to>
</configuration>
</execution>
</executions>
</plugin>
<!-- Steps 3) and 4) are same as in previous code block -->
</build>
</project>
나는 플러그인이 나는이 새로운 문제에 있어요 'Webstart를-받는다는 - 플러그인' –