如果源代码包含关键字/正则表达式,如何使maven构建失败?
(根据目前的答案2013-09-26)
最佳解决方案似乎是@BaptisteMathus answer,它与maven完全集成,并且与平台无关。
在我的用例中,@ GregWhitaker answer是好的,因为它实现的成本更低我不关心平台独立性(< =所需命令可用于我所有的主人)。
下面的代码示例是基于此答案的解决方案,它禁止使用“FIXME”或“自动生成的方法存根”,但假设egrep
可用。
另请参阅@MarkOConnor answer在“启用SONAR”项目中更清洁
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>process-sources</phase>
<configuration>
<executable>egrep</executable>
<successCodes>
<successCode>1</successCode>
</successCodes>
<arguments>
<argument>-rqm</argument>
<argument>1</argument>
<!-- Forbidden Keywords -->
<argument>FIXME|Auto-generated method stub</argument>
<!-- search path -->
<argument>src/main</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 0 :(得分:1)
我会创建一个小程序来运行这些检查,然后通过exec-maven-plugin执行它。如果在主资源中找到关键字,那么只返回一个非零返回码,这将导致插件失败。
答案 1 :(得分:1)
我认为taglist-maven-plugin正是你想要的。
答案 2 :(得分:1)
Sonar有一个taglist插件,允许您在注释块中搜索字符串并指定严重性处理。我假设你正在寻找...解析源代码本身可能需要一个自定义规则的工具,如checkstyle,我没有尝试过这种方法,但它是documented on the Sonar site。
这可以与build breaker插件配合使用,当您的项目quality profile中违反警报条件时,该插件会失败。
答案 3 :(得分:1)
去SonarQube这样做并不是一个坏主意。
无论如何,如果有人想要使用仅限maven的解决方案,那么正确的方法是使用专用于使用maven构建“强制执行”的插件。使用exec-maven-plugin不是那个标准,当然也太依赖平台了。
此插件在逻辑上命名为maven-enforcer-plugin,而writing a custom enforcer rule实际上非常简单。