【问题标题】:How to fail maven build if annotation used?如果使用注释,如何使 Maven 构建失败?
【发布时间】:2017-02-28 20:11:30
【问题描述】:

我想禁止在项目中使用某些注解。特别是来自lombok 的@SneakyThrows 注释。 一种方法是在构建 Maven 工件时失败。 是否有一些现有的插件可以实现这一点?

我认为使用像checkstyle 这样的静态代码分析器是可能的。但我不想为它写新的规则。

如果存在这样的 gradle 插件也很有趣?

【问题讨论】:

    标签: java maven gradle maven-plugin static-code-analysis


    【解决方案1】:
            <plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <version>1.5.3</version>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <basedir>${basedir}</basedir>
                    <includes>
                        <include>target/**/*.java</include>
                    </includes>
                    <regex>false</regex>
                    <replacements>
                        <replacement>
                            <token>@SneakyThrows</token>
                            <value>@@@@ I-DONT-THINK-SO @@@@</value>
                        </replacement>
                    </replacements>
                </configuration>
            </plugin>
    

    【讨论】:

    • 我实际上使用它来通过使用@SurpressWarnings("all")注释每个类/枚举/接口来消除生成源的警告
    • 这是纯文本替换方式吗?它会产生可理解的错误消息吗?它会改变用户目录中的文件吗?
    • 因此编译将在编译阶段失败。好的,它应该可以工作,但是这个插件不会失败构建并且不会产生任何消息错误。无论如何,谢谢!
    猜你喜欢
    • 2011-01-22
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2014-08-17
    • 1970-01-01
    相关资源
    最近更新 更多