2012-01-04 28 views
3

我有类似如下,我需要生成2个zip文件,最后压缩它们备份到另一个zip文件:的Maven Assembly插件,上传正确的zip文件

 <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>assembly1</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          <configuration> 
           <appendAssemblyId>false</appendAssemblyId> 
           <finalName>assembly1</finalName> 
           <descriptors> 
            <descriptor>assembly1.xml</descriptor> 
           </descriptors> 
           <attach>true</attach> 
          </configuration> 
         </execution> 
         <execution> 
          <id>assembly2</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          <configuration> 
           <appendAssemblyId>false</appendAssemblyId> 
           <finalName>assembly2</finalName> 
           <descriptors> 
            <descriptor>assembly2.xml</descriptor> 
           </descriptors> 
           <attach>true</attach> 
          </configuration> 
         </execution> 
         <execution> 
          <id>assembly3</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          <configuration> 
           <appendAssemblyId>false</appendAssemblyId> 
           <finalName>assembly3</finalName> 
           <descriptors> 
            <descriptor>assembly3.xml</descriptor> 
           </descriptors> 
           <attach>true</attach> 
          </configuration> 
         </execution> 
        </executions> 
    </plugin> 

我所试图做的是创建2个名为assembly1.zip和assembly2.zip的zip文件,最后将这2个zip文件压缩成assembly3.zip

在目标文件夹下,我看到了创建的zip文件,并在assembly3.zip中看到了assembly1和2 zip文件以及。

当Maven上传到本地仓库时,它随机选取其中一个zip文件,我想上传的是assembly3.zip文件。

这是我在Maven的日志中看到:

[INFO] --- maven-assembly-plugin:2.2-beta-5:single (assembly1) @ MyTestWar --- 
[INFO] Reading assembly descriptor: assembly1.xml 
[INFO] Building zip: C:\MyTest\target\assembly1.zip 

[INFO] --- maven-assembly-plugin:2.2-beta-5:single (assembly2) @ MyTestWar --- 
[INFO] Reading assembly descriptor: assembly2.xml 
[INFO] Building zip: C:\MyTest\target\assembly2.zip 
**[WARNING] Artifact com.test:MyTestWar:zip:1.0.0.11-SNAPSHOT already attached to project, ignoring duplicate** 

[INFO] --- maven-assembly-plugin:2.2-beta-5:single (assembly3) @ MyTestWar --- 
[INFO] Reading assembly descriptor: assembly3.xml 
[INFO] Building zip: C:\MyTest\target\assembly3.zip 
**[WARNING] Artifact com.test:MyTestWar:zip:1.0.0.11-SNAPSHOT already attached to project, ignoring duplicate** 



**[INFO] Installing C:\MyTest\target\assembly1.zip to C:\Users\myUserName\.m2\repository\ 
com\test\MyTestWar\1.0.0.11-SNAPSHOT\MyTestWar-1.0.0.11-SNAPSHOT.zip** 

这是我的Maven插件安装在我尝试上传Assembly3.zip

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-install-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>install</phase> 
         <id>zip-upload</id> 
         <goals> 
          <goal>install-file</goal> 
         </goals> 
         <configuration> 
          <packaging>zip</packaging> 
          <artifactId>Assembly3</artifactId> 
          <groupId>${project.groupId}</groupId> 
          <version>${project.version}</version> 
          <file>${project.build.directory}/assembly3.zip</file> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

虽然它被提及它得到上传assembly3.zip,出于某种原因,Maven正在拾取assembly1.zip。

另外我对这些警告感兴趣。

任何帮助摆脱警告以及上传Assembly3.zip是高度赞赏。

感谢

回答

2

使用

<attach>true</attach> 

只为你要上传的组件。对于另外两次执行,省略此选项。

至于为什么它会选择一个随机装配而不是上传所有三个,我猜你的assembly descriptors中的装配ID是一样的。该错误消息

[警告]神器com.test:MyTestWar:邮编:1.0.0.11 - 快照已连接到项目,忽略重复这个

提示。即使您给出了不同的zip文件夹finalName值,它们仍然继承了组件描述符中ID的分类器。