2010-01-08 2 views

답변

9

이것은 다른 (서명 된) jar에 종속 된 애플릿의 샘플 pom입니다. 애플릿 모듈의 코드는 jar 파일로 패키징되어 테스트 키를 사용하여 서명됩니다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <parent> 
    <artifactId>parent</artifactId> 
    <groupId>com.example</groupId> 
    <version>0.1</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>applet</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>com.example.applet</name> 
    <build> 
    <finalName>${artifactId}-${version}</finalName> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jarsigner-plugin</artifactId> 
     <executions> 
      <execution> 
      <goals> 
       <goal>sign</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
       <keystore>src/main/keystore/signing-jar.keystore</keystore> 
       <alias>applet</alias> 
       <storepass>applet</storepass> 
       <keypass>applet</keypass> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>other</artifactId> 
     <version>0.4</version> 
    </dependency> 
    </dependencies> 
</project> 

이 키 저장소 생성 (장소와 치어 파일이있는 위치를 실행)하는 샘플 쉘 스크립트입니다 : 당신이 당신의 서명 com.example.applet-있을 것이다

#!/bin/sh 
KEYSTORE=src/main/keystore/signing-jar.keystore 
keytool -genkey -alias applet -keystore $KEYSTORE -storepass applet -keypass applet -dname "CN=developer, OU=group 3, O=com.example, L=Somewhere, ST=Germany, C=DE" 
keytool -selfcert -alias applet -keystore $KEYSTORE -storepass applet -keypass applet 

MVN 패키지 후 0.1-SNAPSHOT.jar. 웹 응용 프로그램에 의존성 (com.example.other-0.4.jar)과 함께 배치하십시오.

10

당신이 하나의 jar 파일에 표시 수업 종속성을하고 싶은 경우에, 당신은 사용해야 중 하나 assembly plugin 또는 jarsigner 전에 one-jar plugin. 나는 어셈블리 플러그인으로 다음과 같은 작업 설정을 가지고있다. 그것은 보통의 (서명 된) jar와 $ {artifactId} - $ {version} -jar-with-dependencies.jar (또한 서명 됨)을 생성 할 것이다.

  <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-5</version> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <index>true</index> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
       </archive> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-my-applet-jar</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </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>keystore</keystore> 
       <alias>keyalias</alias> 
       <storepass>storepass</storepass> 
       <keypass>keypass</keypass> 
      </configuration> 
     </plugin> 
+2

maven-shade-plugin은 클래스 경로에서 사용할 수있는 모든 종속성을 가진 단일 실행 가능한 JAR을 생성하기위한 옵션입니다. 가장 큰 차이점은 음영 플러그인은 모든 종속성과 임베디드 JAR과는 반대로 내장 된 .class 파일을 포함한다는 것입니다. –

+0

2.2-beta-5보다 큰 모든 메이븐 어셈블리 플러그인 버전이 충돌합니다. –

관련 문제