2012-01-04 186 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