gpt4 book ai didi

java - 基于先前插件执行的 Maven 插件条件执行 (maven-compiler-plugin)

转载 作者:行者123 更新时间:2023-11-30 10:51:53 25 4
gpt4 key购买 nike

是否可以根据 maven-compiler-plugin 是否实际检测到源更改并因此编译和生成新的类文件,在编译阶段有条件地执行目标?

我的用例是仅当项目中有新的字节代码时才运行 findbugs 或 jacoco 插件。

目前,我通过将 findbugs Hook 到编译阶段来无条件地运行它:

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<executions>
<execution>
<id>findbugs-check-compile</id>
<phase>compile</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>

但是,如果我重复执行“mvn package”,我会得到:

[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ my-prj ---
[INFO] Nothing to compile - all classes are up to date
[INFO] >>> findbugs-maven-plugin:3.0.1:check (findbugs-check-compile) > :findbugs @ my-prj >>>
[INFO] --- findbugs-maven-plugin:3.0.1:findbugs (findbugs) @ my-prj ---
[INFO] Fork Value is true
[INFO] Done FindBugs Analysis....

注意 maven-compiler-plugin 如何检测到“没有要编译的 - 所有类都是最新的”。如果情况并非如此,我只想执行 findbugs:check(或者等价地,如果情况确实如此并且没有任何变化,我想跳过“findbugs:check”目标执行)。

注意 1:我知道基于操作系统/体系结构/系统属性等的配置文件和条件激活,但我的理解是这些在 maven 启动时早期评估,并且不能在构建期间更改。

注意 2:我也看到提到了 maven-ant-plugin,但我想完全跳过额外插件的执行。我不想添加 antrun 执行只是为了能够跳过 findbugs。

注意 3:我需要能够为多个插件执行此操作,而不仅仅是 findbugs

最佳答案

老实说,我认为没有办法做到这一点。只有一种变通方法,但不完全是您的确切需求(基于配置文件、profile1 中的属性设置将被另一个配置文件获取等)。

类似的东西通常是用像 jenkins 这样的工具来实现的,你可以在其中设置一个基本的工作,例如,如果它成功或完成,或者你看到正在生成的东西,就做一个包(编译),然后你激活一个构建后的工作来执行查找错误。

关于java - 基于先前插件执行的 Maven 插件条件执行 (maven-compiler-plugin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com