我想要做的是每当我运行“mvn install”命令时,我需要一些插件来执行。具体来说,我需要执行声纳插件,以检查项目中是否存在任何关键问题。如果有,则构建将失败。
但是,我希望此插件仅在“开发”分支上执行。开发分支上的项目版本如下所示:1.0.5-SNAPSHOT。主分支上的项目版本:1.0.5
那么,我如何仅在开发分支上运行插件?我想,我可能会根据版本(仅限快照)执行此操作,但我不确定是否可能
答案 0 :(得分:1)
开箱即用不支持您尝试执行的操作 - 根据您的项目<version/>
无法自动触发插件。 (嗯,这不完全正确,但你必须成为插件的作者并为此编写自己的逻辑,如果你真的想要;但这只适用于你的插件)。
我建议创建Maven配置文件并通过命令行变量(-DmyParam
)或通过指定配置文件的名称(-PmyDevProfile
)来触发它。
请查看以下链接,以便更好地了解Maven个人资料:
答案 1 :(得分:1)
我认为您可以通过以下方式实现此行为。首先在构建中添加build-helper-maven-plugin插件(开头)。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>bsh-property</id>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<properties>
<property>skip.sonar</property>
</properties>
<source>skip.sonar = project.getVersion().endsWith("-SNAPSHOT") ? false : true;</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
bsh-property目标执行beanshell脚本,该脚本定义skip.sonar属性为true或false,具体取决于您的版本是否在最后有快照。
然后你可以使用sonar maven插件的skip属性。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.7.1</version>
<executions>
<execution>
...
<configuration>
<skip>${skip.sonar}</skip>
</configuration>
</plugin>
</plugins>
</build>