maven-enforcer-plugin,里面有一项功能bannedDependencies,可以通过设置依赖黑白名单,如果有依赖匹配了黑名单中的依赖设置,那么maven会停止(可以配置)当前操作(打包构建,甚至是mvn eclipse:eclipse),打印错误日志提示,配置的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforce-versions</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>2.1.0</version> </requireMavenVersion> <requireJavaVersion> <version>1.6</version> </requireJavaVersion> </rules> </configuration> </execution> <execution> <id>enforce-banned-dependencies</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <bannedDependencies> <excludes> <exclude>junit:junit</exclude> <exclude>org.testng:testng</exclude> <exclude>com.google.collections:google-collections</exclude> <exclude>commons-logging:commons-logging</exclude> </excludes> <includes> <include>junit:junit:3.8.1:jar:test</include> </includes> </bannedDependencies> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> |
从这个插件配置上可以看出,还可以限制java版本以及maven版本。重点看看对依赖黑白名单,黑名单中规定不能引入google-collections,那么一旦依赖了这个,操作会提示,至于是不是会停止操作,取决于下边fail标签中的配置。比较特殊的是黑名单中排除了junit,而白名单中更加详细地描述junit,这个可以这么解读:不允许依赖junit,除了版本是3.8.1的scope为test的junit,从此可以看出,白名单是对黑名单的补充,这样更加灵活。
虽然黑白名单可以解决一部分问题,但是还是由衷的希望尽早出现全局排除活跃jar包的问题.