如何获取mvn依赖树以过滤特定版本的依赖项

时间:2017-12-11 08:43:55

标签: java maven

是否有任何maven命令可以帮助我过滤特定版本的依赖关系树。 例如:我有来自不同pom的http客户端 4.5.1,4.5.2,4.5.3 jar版本。

我可以通过过滤

来获取树
 mvn dependency:tree -Dverbose -Dincludes=org.apache.httpcomponents:httpcore

如果我有很多使用旧版本的依赖项,那么排除那些对于多模块项目 来说是繁琐和笨拙的,如果我们有一个额外的过滤器来仅过滤4.5.1和4.5.2依赖项它会使我们的工作变得轻松。

  

请注意,这些是传递依赖项,如果我使用exclude on   使用enforcer插件的传递依赖,它不会下载   因为我没有使用我的依赖管理,所以最新的jar也是   POM

我需要的是传递依赖应该下载我需要的版本而不是旧版本。我不能修改传递依赖pom。

任何能够摆脱一些亮光的人都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

请查看maven-enforcer-plugin

我们使用它来确保不会使用某些依赖项。 E.g。

 <plugin>
   <artifactId>maven-enforcer-plugin</artifactId>
   <version>1.4.1</version>
    <executions>
        <execution>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <bannedDependencies>
                        <excludes>
                            <exclude>commons-collections:commons-collections:[3.2.1]</exclude>
                        </excludes>
                    </bannedDependencies>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

答案 1 :(得分:0)

您可以使用grep:

 mvn dependency:tree -Dverbose -Dincludes=org.apache.httpcomponents:httpcore |grep "4.5.1"