2013-10-07 71 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>