2017-04-04 1 views
2

maven shade plugin을 사용하여 뚱뚱한 항아리를 만들고 있습니다. 그러나 이것은 Bouncy Castle의 서명되지 않은 버전 때문에 문제를 만듭니다.Maven Shade 플러그인이있는 종속 항아리가있는 종속성 폴더 만들기

이 java.lang.SecurityException : JCE가 제공

BC

를 인증 할 수없는 지금의 해결책 중 하나는 종속의 외부 폴더가 지방 항아리의 매니페스트 파일에서이 클래스 경로를 정의하는 것입니다.

예를 들어

:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
          <artifactSet> 
           <excludes> 
            <exclude>org.bouncycastle:*:*:*</exclude> 
           </excludes> 
          </artifactSet> 
         <finalName>Relay-S3-Monitor-jar-with-dependencies</finalName> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>at.seresunit.lecturemanager_connector.App</mainClass> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.handlers</resource> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.schemas</resource> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <manifestEntries> 
            <Main-Class>com.pb.relay.s3.CamelBoot</Main-Class> 
            <Class-Path>. bouncycastle_libs/bcpg-jdk15on-1.55.jar bouncycastle_libs/bcprov-jdk15on-1.55.jar bouncycastle_libs/bcprov-jdk16-1.45.jar</Class-Path> 
           </manifestEntries> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin 

지금 내가 필요한 : 같은 pom.xml 파일에, 나는 섹션 (플러그인)을 삽입해야합니다 (만 탄력이 성 항아리) depencies 폴더를 생성

답변

1

저도 같은 오류를보고 있었다으로 종속성을 복사 dependency:copy를 호출 할 수 있습니다 동네 짱의 BouncyCastle에 의존 항아리 컴파일 할 때 : 나는 귀하의 경우 실현

Exception in thread "main" java.security.NoSuchProviderException: JCE cannot authenticate the provider BC 

을 별도의 디렉토리에 항아리를 수출 좋은 있었지만, 하나의 단지에 관심이 들어, 문제는 Maven의 그늘 플러그인 폭발 암호화의 서명을 깨뜨리는 jar 파일 (자세한 것은 this explanation).

단일 실행 가능한 jar에서 JCE에 대한 서명을 보존하는 jar-in-jar 방식을 사용하는 executable packer maven plugin solution을 대신 사용할 수 있습니다.