问题
如果源代码包含关键字/正则表达式,如何使 Maven 构建失败?
奖金
- 能够指定要检查的路径
能够指定要检查的“种类”路径:“我想确保 KEYWORD 不包含在‘主要’资源中。我不关心‘测试’”“我想确保 KEYWORD 不包含在 'test' 资源中。我不关心 'main'”- ...
- 能够指定在哪个阶段执行测试(例如在编译之前)
解决方案
(基于当前答案 2013-09-26)
最好的解决方案似乎是@BaptisteMathus答案,它与 maven 完全集成并且独立于平台。
在我的用例中,@GregWhitaker的答案是一个很好的答案,因为它实现起来更便宜,因为我不关心平台独立性(<= 所需的命令在我的所有主机上都可用)。下面的代码示例是基于此答案的解决方案,它禁止使用“FIXME”或“自动生成的方法存根”,但假设这egrep
是可用的。
另请参阅“启用声纳”项目中更简洁的@MarkOConnor答案
<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>