我有一个项目取决于供应商控制的工件.此工件包含一些我依赖的类,以及一些较旧且导致问题的类.有没有办法让maven自动扩展jar,删除类,并将它们重新打包为依赖?我试着举个例子.
supplier:artifact:1.0.0
com.supplier.useful.ClassA
com.supplier.dto.ClassB (old)
us:dependency:1.1.20
com.supplier.dto.ClassB (new)
us:project-web:1.1.20
- supplier:artifact:1.0.0
- us:dependency:1.1.20
Run Code Online (Sandbox Code Playgroud)
所以 - 我需要ClassA
在project-web中使用,但我需要使用ClassB
来自dependency
工件的.我无法修改供应商:工件,或我们:依赖.
有任何想法吗?!
如果您使用的是Maven 2.0.9+,那么只需将您的类放入jar中,然后在供应商的工件之前将其声明为依赖项.正如@Peter所提到的,Maven使用了自Maven 2.0.9以来的类路径的pom顺序(参见MNG-1412/MNG-3111).
如果由于某种原因你对这个解决方案不满意,那么你可以使用Maven Dependency Plugin来解压缩依赖target/classes
(应该在编译类路径上)使用dependency:unpack
一些excludes
(参见解包特定的工件).我甚至不会尝试重新打包它,这将引入无用的复杂性(如果可行的话,在编译类路径中用新的替换旧jar将不会是微不足道的).