如何检查在阶段调用的 Maven 目标

Posted

技术标签:

【中文标题】如何检查在阶段调用的 Maven 目标【英文标题】:How to check that maven goal called during phase 【发布时间】:2012-06-10 13:40:10 【问题描述】:

我配置了一些插件目标以在我的构建生命周期的某些阶段执行(maven android 应用程序)。但我认为我在配置插件时犯了一个错误,并想确保他们真的打电话。我发现这个命令将打印所有生命周期阶段和目标:mvn help:describe -Dcmd=install,但它没有显示我配置的目标。因此我有两个问题:

mvn help:describe -Dcmd=install 命令是否显示我的目标 内部配置<build>/<plugins>/<plugin>/<executions>/<execution> pom标签?

如何确保在阶段期间调用目标和在期间调用阶段 构建生命周期?

更新 我正在尝试配置 maven-android-plugin 并希望在打包阶段执行 zipalign 目标

        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>3.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <sdk>
                    <platform>8</platform>
                </sdk>
                <emulator>
                    <avd>2.3.3_API-10</avd>
                </emulator>
                <undeployBeforeDeploy>true</undeployBeforeDeploy>
                <assetsDirectory>$project.build.directory/filtered-assets</assetsDirectory>
                <androidManifestFile>$project.build.directory/filtered-manifest/AndroidManifest.xml</androidManifestFile>
                <zipalign>
                    <skip>false</skip>
                    <verbose>$build.verbosity</verbose>
                    <inputApk>$project.build.directory/$project.artifactId-$build.version.name.apk</inputApk>
                    <outputApk>$project.build.directory/$project.artifactId-$build.version.name-aligned.apk</outputApk>
                </zipalign>
            </configuration>
            <executions>
                <execution>
                    <id>zipalign</id>
                    <phase>package</phase>
                    <goals>
                        <goal>zipalign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

【问题讨论】:

你能发布你的执行标签的代码吗? 好问题! +1 ...我也想知道如何调试它。 您是否曾经在 mvn clean 包期间检查过输出,或者您是否将输出重定向到文件并检查了文件的内容? 试试mvn -X clean install -l log.txt然后分析log.txt matt5784,我在问题的更新部分发布我的执行标签 【参考方案1】:

您可以看到在日志中调用了 maven 目标。 对于您使用 zipalign 的情况,您可以看到例如:

[INFO] --- android-maven-plugin:3.5.0:zipalign (alignApk) @ androidclientlight ---
[INFO] Running command: C:\Eclipse\Android\android-sdk-windows_r12\tools\zipalign.exe
[INFO] with parameters: [-v, -f, 4, 

如果跳过,您将看到:

[INFO] --- android-maven-plugin:3.5.0:zipalign (alignApk) @ androidclientlight ---
[INFO] Skipping zipalign

提示,不要忘记在您的 zipalign 配置中添加标志“false”。

      <zipalign>
        <skip>false</skip>
        <verbose>true</verbose>
        <inputApk>$project.build.directory/$project.artifactId-$project.version.apk</inputApk>
        <outputApk>$project.build.directory/$project.artifactId-release-v$project.version.apk</outputApk>
      </zipalign>

【讨论】:

以上是关于如何检查在阶段调用的 Maven 目标的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 测试阶段生成 jacoco 报告

Maven 安装生命周期阶段不调用资源阶段

Maven:生命周期与阶段与插件与目标的关系[关闭]

如何在 maven 的集成测试目标中运行单个测试

如何在 gitlab-ci build 中跳过前面的 maven 目标?

Maven - 为什么mvn install会启动编译或测试阶段?