2013-05-15 13 views

답변

4

이것은 MWEBSTART-176에 기반하여 요청되었지만 (아직) 구현되지 않은 기능처럼 보입니다.

+0

이라고 확신합니다. –

3

JNLP 서명 (자동 생성 APPLICATION.JNLP 또는 APPLICATION_TEMPLATE.JNLP)은 여러 메이븐 플러그인의 구성으로 수행 할 수 있습니다. 일반적으로 webstart-maven-plugin은 maven 모듈에 artifact (예 : zip 파일) 패키징과 같은 완벽한 작업을 수행합니다.

A) APPLICATION.JNLP 생성을위한 :

  1. 이 JNLP를 생성하고 디렉토리/대상에 매니페스트 항목을 포함하여 모든 라이브러리 ( 갱신)에 서명 JNLP 서명을 할 수있는 열쇠는 여러 단계로이 작업을 분할하는 것입니다 Webstart를-받는다는 - 플러그인
  2. 사본 & 이름 바꾸기 jnlp 파일에서/목표/JNLP 디렉토리
  3. repeately truezip - 받는다는 - 플러그인 대상/JNLP/main.jar의/JNLP-INF는/APPLICATION.JNLP 에와/JNLP target/jnlp/ma의 main.jar 파일에 서명하십시오. in.jar with maven-jarsigner-plugin
  4. 패키지/대상/jnlp 예 : 예 : APPLICATION_TEMPLATE.JNLP 발생 용 받는다는 전쟁 - 플러그인 또는 받는다는 어셈블리 - 플러그인

B) (포인트 1 및 2는 이전 단계에서 다르다)과 : JNLP :

  1. 모두를 생성 APPLICATION_TEMPLATE.JNLP는 대상에 /target/jnlp/APPLICATION_TEMPLATE.JNLP에서 Webstart를-받는다는 - 플러그인 디렉토리 /대상/JNLP에
  2. 이동 APPLICATION_TEMPLATE.JNLP 파일 (매니페스트 항목 업데이트를 포함하여) 모든 라이브러리에 서명/JNLP/main.jar/JNLP-INF/APPLICATION_TEMPLATE truezip - 받는다는 - 플러그인은 .jnlp는
  3. repeately 예를 아티팩트
  4. 패키지/대상/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>