2010-05-07 56 views
3

我有一个使用maven程序集插件从一个jar创建多个jar现在问题是我必须发布这些jar到本地回购,就像其他maven罐由他们自己时,他们都建立行家发布全新安装我如何能够在这里做这个如何发布多个jar文件到干净的安装maven

是我的POM文件

<project> 
<parent> 
    <groupId>parent.common.bundles</groupId> 
    <version>1.0</version> 
    <artifactId>child-bundle</artifactId> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<groupId>common.dataobject</groupId> 
<artifactId>common-dataobject</artifactId> 
<packaging>jar</packaging> 
<name>common-dataobject</name> 
<version>1.0</version> 
<dependencies> 
     </dependencies> 
<build> 
    <plugins> 
    <plugin> 
    <groupId>org.jibx</groupId> 
    <artifactId>maven-jibx-plugin</artifactId> 
    <version>1.2.1</version> 
    <configuration> 
    <directory>src/main/resources/jibx_mapping</directory> 
    <includes> 
     <includes>binding.xml</includes> 
    </includes> 
    <verbose>false</verbose> 
    </configuration> 
    <executions> 
    <execution> 
     <goals> 
     <goal>bind</goal> 
     </goals> 
    </execution> 
    </executions> 
    </plugin> 
    <plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>make-business-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>flight-dto</finalName> 
     <descriptors> 
     <descriptor>src/main/assembly/car-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    <execution> 
     <id>make-gui-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>app_gui</finalName> 
     <descriptors> 
     <descriptor>src/main/assembly/bike-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    </executions> 
    </plugin> 
    </plugins> 
</build> 

    </project> 

这里是我的汇编文件

<assembly> 
    <id>app_business</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <baseDirectory>target</baseDirectory> 
    <includeBaseDirectory>false</includeBaseDirectory> 

    <fileSets> 
    <fileSet> 
     <directory>${project.build.outputDirectory}</directory> 
     <outputDirectory></outputDirectory> 
     <includes> 
     <include>com/dataobjects/**</include> 
     </includes> 
    </fileSet>  
    </fileSets> 
</assembly> 
+0

冠军并不意味着包含整个文本;它们旨在对文本进行简要的总结。 – Gumbo 2010-05-07 15:26:56

回答

2

非常感谢帕斯卡,这东西真的有效。 这里是一个,我已经加入过多使其工作的配置..

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.5</version> 
     <executions> 
      <execution> 
      <id>abc</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>src/main/assembly/flight-assembly.xml</file> 
        <type>xml</type> 
        <classifier>flight</classifier> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
    </plugin> 
17

Build Helper Maven Plugin有一个build-helper:attach-artifact允许附加额外的工件安装和部署。它通常像这样使用(从Usage页):

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <!-- add configuration for antrun or another plugin here --> 
     </plugin> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.5</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>some file</file> 
        <type>extension of your file </type> 
        <classifier>optional</classifier> 
       </artifact> 
       ... 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+1

难道你不需要告诉程序集插件做附件吗? – bmargulies 2010-05-11 20:22:57

+2

@bmargulies这确实是自动完成的。但OP已经将'appendAssemblyId'设置为'false',所以我假设第一个程序集在'install'或'deploy'期间被第二个程序集覆盖,并且只有一个工件“似乎”发布(OP没有)提供他们,但maven日志消息时,发生这种情况,我想他不会发布的问题,如果事情“按预期”工作)。 – 2010-05-12 04:15:36

+0

这很好地解决了我遇到的问题。我会补充一点,因为codehaus已经关闭,这个插件的文档和其他维护已经转移到这里:http://www.mojohaus.org/build-helper-maven-plugin/ – David 2017-07-25 18:31:17