我有以下内容,我需要生成2个zip文件,最后将它们压缩到另一个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的帮助都非常受欢迎。
由于
答案 0 :(得分:2)
使用
<attach>true</attach>
仅适用于您要上传的程序集。对于其他两个执行,省略此选项。
至于为什么它选择随机组件而不是上传所有三个,我猜你的assembly descriptors中的程序集ID都是一样的。错误消息
[警告]工件com.test:MyTestWar:zip:1.0.0.11-SNAPSHOT已经附加到项目中,忽略重复
暗示这一点。即使您已经为zip提供了不同的 finalName 值,它们仍然会从程序集描述符中的ID继承分类器。