我想使用proguard maven插件在2个汇编描述符(文件夹格式和zip格式之一)之间执行,所以我定义了我的pom:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>raw-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>raw</finalName>
<descriptors>
<descriptor>src/assemble/raw.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<options>
<option>@${project.build.directory}/raw/proguard/proguard.cfg</option>
</options>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>distro</finalName>
<descriptors>
<descriptor>src/assemble/distro.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
但maven程序集插件总是在proguard插件之前执行2个描述符。
我使用Maven 3.2.2
谢谢,
答案 0 :(得分:3)
在确定运行顺序时,Maven首先运行绑定到生命周期早期阶段的目标。如果多个目标绑定到同一阶段,则它们按照它们在POM中列出的顺序运行。
当你想多次运行一个插件时,你不会像你所示的那样添加两次插件,而是将多个执行放在一个插件中。如果您希望proguard插件在程序集之前执行,您可以将目标绑定到较早的阶段(例如prepare-package
)。如果由于某种原因该阶段必须是package
,那么proguard插件配置必须出现在文件中的程序集插件配置之前。
如果您需要在proguard插件执行之前运行第一个程序集执行,然后执行第二个程序集执行,那么您需要使用两个阶段。 proguard插件配置需要出现在程序集插件之前的文件中,执行应该使用阶段package
。第一个程序集执行应使用prepare-package
,第二个package
。
这是你的POM重新安排工作,所有内容都绑定到原始问题中显示的package
阶段。
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.7</version>
<executions>
<execution>
<phase>package</phase> <!-- fixed spelling -->
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<options>
<option>@${project.build.directory}/raw/proguard/proguard.cfg</option>
</options>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>raw-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>raw</finalName>
<descriptors>
<descriptor>src/assemble/raw.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>distro</finalName>
<descriptors>
<descriptor>src/assemble/distro.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:0)
程序包中的拼写错误
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.7</version>
<executions>
<execution>
<phase>packge</phase> <--- Spelling Issue