在我的maven构建中,我想执行proguard
目标after the tests,以便更快地获得测试结果。因此,我尝试将其绑定到prepare-package
阶段。但是,我的配置下面没有任何影响。 proguard目标仍在process-classes
阶段执行(default-proguard)。我错过了什么?
<plugin>
<groupId>com.simpligility.maven.plugins</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>4.1.0</version>
<executions>
<execution>
<id>progurad-after-test</id>
<phase>prepare-package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- ... -->
<proguard>
<skip>false</skip>
</proguard>
</configuration>
</plugin>
答案 0 :(得分:3)
旧答案:
您无法更改阶段proguard运行。但通常您可以隔离到配置文件中,仅在需要时运行,而不是在每个构建时运行。典型的用例是您只为发布版运行的发布配置文件。您还可以将其作为QA配置文件的一部分,并将其用于需要在开发期间超出正常使用范围进行验证的开发版本。
经过一番思考后更新:
您可以通过配置两个执行来将proguard mojo执行更改为其他阶段。一个用于最初在Android Maven插件中配置的进程源阶段设置为跳过。然后为跳过设置为false的所需阶段配置第二次执行。
<plugin>
<groupId>com.simpligility.maven.plugins</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>4.1.0</version>
<executions>
<execution>
<!-- Skip proguard in the default phase (process-classes)... -->
<id>override-default</id>
<configuration>
<proguard>
<skip>true</skip>
</proguard>
</configuration>
</execution>
<execution>
<!-- But execute proguard after running the tests
Bind to test phase so proguard runs before dexing (prepare package phase)-->
<id>progurad-after-test</id>
<phase>test</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<proguard>
<skip>false</skip>
</proguard>
</configuration>
</execution>
</executions>
<configuration>
<!-- Other configuration goes here. -->
</configuration>
</plugin>