组装插件生成2个罐子。一个有classfiles。一个有依赖

时间:2014-05-01 23:56:40

标签: maven maven-assembly-plugin

我在使用程序集插件构建jar时遇到问题。我有一堆系统jar文件,我想与项目的类文件捆绑在一起。

我当时希望做一些事情:

   final
    - lib
      - system.jar
      - system1.jar
    - com
      - servlet
       -- etc

我曾尝试使用程序集插件,但它会生成2个jar。一个只有我的罐子的lib和另一个带有类文件的lib。 我已阅读了汇编文档但我必须遗漏一些东西。

这是我在pom.xml中的构建元素

   <dependency>
      <groupId>jackson-mapper-asl</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.4</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/lib/jackson-mapper-asl-1.9.4-sc1.jar</systemPath>
   </dependency>
   //... etc

   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
               <execution>
                  <id>final-jar</id>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
                  <configuration>
                     <descriptors>
                        <descriptor>assembly.xml</descriptor>
                     </descriptors>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

这是我的程序集文件(assembly.xml)

<assembly>
   <id>distribution</id>
   <formats>
      <format>jar</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <dependencySets>
      <dependencySet>
         <useProjectArtifact>false</useProjectArtifact>
         <useTransitiveDependencies>true</useTransitiveDependencies>
         <unpack>false</unpack>
         <scope>system</scope>
         <outputDirectory>lib</outputDirectory>
         <includes />
      </dependencySet>
   </dependencySets>
</assembly>

我知道如何将这些罐子合并在一起吗?

1 个答案:

答案 0 :(得分:0)

您通常会有一个更简单的布局,例如:

final
- lib
  -system.jar
  -system1.jar
  -project.jar

即。项目本身也是一个jar,并包含在lib中。在这种情况下,只需将<useProjectArtifact>true/>useProjectArtifact>添加到dependencySet

如果你确实想要直接复制类,请尝试在程序集中添加fileset,从target/classes复制到根位置

<fileSets>
 <fileSet>
  <directory>${project.build.directory}</directory>
  <outputDirectory>/</outputDirectory>
 </fileSet>
</fileSets>