我有一个可以很好地构建和执行的项目(main
)。
我有另一个项目(envelope
),它依赖于main
项目,该项目以胖子罐的形式构建(jar-with-dependencies
使用maven assembly plugin
),然后我从ALM(测试管理软件)运行该项目] >
运行肥罐时,出现此错误:
NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor
Google表示这是由于com.google.guava
的版本之间存在冲突(在编译时和运行时使用的是不同版本?)。>
!!因此,我在我的envelope
项目的pom.xml的最顶部放置了一个对guava 28.1的依赖项,并将对guava的排除放在了所有其他依赖项下。但是,我仍然在运行时收到此错误! :(
此外,如果我从.m2(本地Maven存储库)中删除了番石榴,那么在编译时,我会看到Maven下载了大约七个不同版本的番石榴!
我怎么知道为什么要这么做?我如何防止它这样做?以及如何解决错误?
设置
-Java 11.0.3 -Groovy 2.5.8 -Spock 1.3-groovy-2.5 -IntelliJ IDEA 2019.1 -Maven 3.5 -Maven compiler plugin -Maven build helper plugin -Maven assembly plugin 3.8.1
我有一个可以很好地构建和执行的项目(主项目)。我有另一个项目(信封),该项目依赖于主项目,该项目依赖于一个胖子罐(使用maven组件的jar依赖关系...
您可以尝试将依赖项放在Maven dependency management
中,以便管理在传递性依赖项中使用的工件的版本。
<dependencyManagement>
<dependencies>
<!-- add your dependency here -->
</dependencies>
</dependencyManagement>