有沒有辦法一個Maven插件可以列出不需要的/黑名單的依賴關係(直接和傳遞),如果檢測到列出的依賴關係之一,則構建失敗?黑名單Maven依賴關係
在我的項目中,我們嚴格地希望擺脫Apache Commons Logging並將其替換爲SLF4J JCL Bridge。我意識到我們必須排除不需要的deps自己,但如果有人添加了依賴項,導致列入黑名單依賴項,我希望構建失敗。
有沒有辦法一個Maven插件可以列出不需要的/黑名單的依賴關係(直接和傳遞),如果檢測到列出的依賴關係之一,則構建失敗?黑名單Maven依賴關係
在我的項目中,我們嚴格地希望擺脫Apache Commons Logging並將其替換爲SLF4J JCL Bridge。我意識到我們必須排除不需要的deps自己,但如果有人添加了依賴項,導致列入黑名單依賴項,我希望構建失敗。
您可以使用maven-enforcer-plugin
禁止一些依賴關係。
下面是他們的示例,其中包含更新以排除Apache Commons Logging。
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>commons-logging:commons-logging</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
時運行mvn install
將輸出:
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:
Found Banned Dependency: commons-logging:commons-logging:jar:1.1.1
Use 'mvn dependency:tree' to locate the source of the banned dependencies.
這一切都與一個BUILD FAILURE
結束。
是的,enforcer plugin支持這與bannedDependencies規則。
另一個我最喜歡的是codehaus extra enforcer規則庫中的[banDuplicateClasses](http://mojo.codehaus.org/extra-enforcer-rules/banDuplicateClasses.html)規則。這將檢測由'commons-logging'和'jcl-over-slf4j'上的依賴引入的重複類。 – Ramon