2012-01-04 178 views
1

我使用maven程序集插件將所有依賴關係收集到一個jar文件中。我如何告訴maven不要重新包裝依賴項,並將它們作爲jar文件包含到生成的jar文件中?maven不重新包裝依賴關係

目前我使用下面的插件配置。

<plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>package.Program</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 

想jar文件的結構:

my-jar-with-dependencies.jar 
|-dependency1.jar 
|-|-class1.class 
|-dependency2.jar 
|-|-class2.class 
|-........... 

,而不是

my-jar-with-dependencies.jar 
|-class1.class 
|-class2.class 
|-............. 
+0

罐不能包含其他罐子。 'maven-assembly-plugin'可以創建zip文件(你的程序集描述符文件中的' zip'),但是需要解壓縮才能真正運行應用程序。 – 2012-01-04 11:18:47

+0

@dma_k,但日食是能夠導出jar與嵌入式罐子 – 2012-01-04 12:52:48

+0

那麼你接下來用這個jar做什麼?你能從命令行執行它嗎? – 2012-01-04 15:21:08

回答

0

如果我理解正確的問題,要指定當組件plugn應運行與否。我應該考慮創建一個build profile並將彙編插件配置添加到新配置文件中。

在pom.xml中添加:

<project> 
... 
<profiles> 
    <profile> 
     <id>myprofile</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <archive> 
          <manifest> 
           <mainClass>package.Program</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 
... 
</project> 

當你想行家運行Assembly插件,那麼你可以使用-p開關到 'MVN' 這樣的腳本:

mvn -Pmyprofile clean package 
+0

不,我希望設置程序集插件不要將依賴關係解壓縮到生成的jar文件中。它必須將它們包括爲jar文件。 – 2012-01-04 09:38:43

+0

然後你應該使用zip-with-dependencies描述符 – Zapodot 2012-01-04 09:40:49