2013-10-07 4 views
2

클래스에서 maven jar 이슈를 작성하려고합니다. 소스 파일이 없습니다. 이러한 클래스는 원래 로컬로 설치된 다른 이슈에 있습니다. maven-dependency-plugin을 사용하여 클래스의 압축을 풀고이 프로젝트/모듈의 대상 폴더에 넣습니다.클래스 소스가없는 Java 소스에서 빌드 maven jar

jar 파일을 만듭니다. 다만 방금 압축을 푼 클래스는 포함하지 않습니다. 내 몸매는 다음과 같습니다.

<build> 
... 

<!-- unpack myjar1.jar and myjar2.jar --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>unpack</id> 
         <phase>package</phase> 
         <goals> 
          <goal>unpack</goal> 
         </goals> 
         <configuration> 
          <artifactItems> 
           <artifactItem> 
            <groupId>com.company</groupId> 
            <artifactId>myjar1</artifactId> 
            <version>1.0</version> 
            <type>jar</type> 
            <overWrite>false</overWrite> 
            <outputDirectory>target/final</outputDirectory> 
           </artifactItem> 
           <artifactItem> 
            <groupId>com.company</groupId> 
            <artifactId>myjar2</artifactId> 
            <version>1.0</version> 
            <type>jar</type> 
            <overWrite>false</overWrite> 
            <outputDirectory>target/final</outputDirectory> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>default</id> 
         <phase>package</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
         <configuration> 
          <classesDirectory>/path/to/target/final/folder</classesDirectory> 
          <includes> 
           <include>**</include> 
          </includes> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

</plugins> 

</build> 

어떻게 이러한 클래스를 final.jar에 포함시킬 수 있습니까?

+0

잘못된 질문을하고 계실 수 있습니다. 무엇을 성취하려고합니까? 이른바 뚱뚱한 항아리? –

+0

음 ... 네. 다른 두 병을 병합하여 jar 파일을 작성해야하며 소스가 없습니다. –

답변

3

가장 좋은 해결책은 maven-shade-plugin입니다 : pom.xml을 만들고,이 2 개의 라이브러리를 의존성으로 추가하고, maven-shade-plugin을 구성하십시오. mvn package을 실행하고 병합 된 프로젝트가 있습니다.

2

로버트가 위에 쓴 것은 실용적인 솔루션 일 수도 있습니다 ..하지만 나는 다른 방법을 찾아 냈습니다. 간단히 maven-jar-plugin 내에서 <includes>을 삭제하면 효과가있었습니다. 빌드 구성을 작성하여 Eclipse에서 빌드를 실행하고 "디버그"옵션을 선택했습니다. 그렇지 않으면 표시되지 않는 "구성"에 대한 많은 정보가 쏟아집니다.

감사합니다.

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>default</id> 
         <phase>package</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
         <configuration> 
          <classesDirectory>path/to/final/folder</classesDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

1

또 다른 접근법은 ouputDirectory를 일반 target/classes 디렉토리로 설정하는 것입니다.

: 대상/클래스

그래서 압축을 푼 클래스 플러스 프로젝트 수업은 **

완벽한 치어을 명시 할 정규 받는다는 항아리 - 플러그인을 사용하여 .JAR하기에 번들로 제공 할 수있다 대상/클래스에 있음됩니다

<build> 
<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.8</version> 
      <executions> 
       <execution> 
        <id>unpack</id> 
        <phase>package</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>a.b.c</groupId> 
           <artifactId>aaa</artifactId> 
           <type>jar</type> 
           <overWrite>true</overWrite> 
           <outputDirectory>target/classes</outputDirectory>          
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>default</id> 
        <phase>package</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 

        <configuration> 
      <includes> 
        <include>**</include> 
      </includes> 
      </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build>