Maven 插件,用于限制使用特定软件包

2022-09-03 05:41:11

我在一个由大约40名开发人员组成的团队中工作,我不希望任何开发人员使用某些特定的API(确切地说是java.sun.Base64),而是让他们使用sun API的替代品作为其专有的。

是否有任何用于maven的插件,通过这些插件,在pom.xml中指定受限制的包,如果在代码中的任何一个中使用这些包中的任何一个,构建将会中断?

还是有更优雅的方法来做到这一点??

谢谢


答案 1

您希望为项目定义一个体系结构规则,最好通过源代码分析来强制执行该规则。

Sonar 现在能够指定此类规则并在项目的质量仪表板上显示违规行为。如果您希望中断构建,还可以启用Sonar的构建破坏器插件来完成此操作。

声纳非常容易设置,并集成到您的Maven构建过程中,对POM没有任何更改。


答案 2

这是我为类似目的而编写的插件。

详细信息可以在这里看到:https://github.com/yamanyar/restrict-maven-plugin/wiki

限制从 com.ya* 到 java.util.regex 的所有访问。

<restriction>com.ya* to java.util.regex.*</restriction>

限制从 com.ya* (com.yamanyar.core 除外) 到 java.util.regex. 的所有访问。

<restriction>com.ya*,!com.yamanyar.core.* to java.util.regex.*</restriction>

限制从 com.ya*(除了 com.yamanyar.core.)和 com.abc.Test 到 java.util.regex 的所有访问。

<restriction>com.ya*,com.abc.Test,!com.yamanyar.core.* to java.util.regex.*</restriction>

限制从 com.ya*(除了 com.yamanyar.core.)和 com.abc.Test 到 java.util.regex 的所有访问。( 除了 java.util.regex.Matcher)<restriction>com.ya*,com.abc.Test,!com.yamanyar.core.* to java.util.regex.*,!java.util.regex.Matcher</restriction>

限制从 com.ya*(除了 com.yamanyar.core.)和 com.abc.Test 到 java.util.regex 的所有访问。( 除了 java.util.regex.Matcher);并且还将 com.ya* (com.yamanyar.core 除外) 限制为 java.io.PrintStre.print*()

<restriction>com.ya*,com.abc.Test,!com.yamanyar.core.* to java.util.regex.*,!java.util.regex.Matcher</restriction>
<restriction>com.ya*,!com.yamanyar.core* to java.io.PrintStre*.print*()</restriction>

推荐