2013-10-07 68 views
2

我想建立從班Maven的罐子神器。我沒有源文件。這些類最初在本地安裝的另一個工件中。我使用maven-dependency-plugin來解壓類,並將它們放在這個項目/模塊的目標文件夾中。構建Maven的罐子沒有java源

它創建的jar ..但不包括我剛纔解壓的類。這裏是我的POM:

<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的遮陽簾插件。 運行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常規目標/ classes目錄下。 目標/班

使未包裝的類加項目班會於可被捆綁使用常規的maven-JAR-插件通過specifing **

完全POM到的.jar目標/班avaialble:

<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>