我有以下的gradle配置(基于医生们):
compile ('org.quartz-scheduler:quartz:2.2.3') {
exclude group: 'c3p0'
}
compile ('org.quartz-scheduler:quartz-jobs:2.2.3') {
exclude group: 'c3p0'
}我也试过:
compile ('org.quartz-scheduler:quartz:2.2.3') {
exclude group: 'c3p0', module: 'c3p0'
}
compile ('org.quartz-scheduler:quartz-jobs:2.2.3') {
exclude group: 'c3p0', module: 'c3p0'
}但我仍然得到
+--- org.quartz-scheduler:quartz:2.2.3
| +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12
| \--- c3p0:c3p0:0.9.1.1当我列出依赖项时( jar出现在我的war文件中)。
------------------------------------------------------------
Gradle 3.3
------------------------------------------------------------
Build time: 2017-01-03 15:31:04 UTC
Revision: 075893a3d0798c0c1f322899b41ceca82e4e134b
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_111 (Oracle Corporation 25.111-b14)
OS: Mac OS X 10.12.2 x86_64这是一个问题,因为hibernate库引用了0.9.2.1 c3p0,但是它有一个不同的组(com.mchange),因此没有出现新版本的常规依赖偏好。我有奇怪的关闭语句连接池错误,尽管已配置为在签出时验证连接。抛出它的代码都是由JPA管理的,我在任何地方都不叫close .因此,我希望在这里清理c3p0,以确保它不是类路径上的混合版本造成的问题。
发布于 2017-02-07 00:06:58
我发现了问题。我用迈克尔·复活节的裸骨模板作为开始,并逐渐增加了一些东西。当我在JesterJ上添加一个依赖项时,问题又出现了.这导致了这样的结果(许多无关的谎言被省略了):
+--- org.jesterj:injest:0.2-SNAPSHOT
| +--- org.apache.tika:tika-parsers:1.12
| | +--- edu.ucar:netcdf4:4.5.5
| | | +--- edu.ucar:cdm:4.5.5
| | | | +--- org.quartz-scheduler:quartz:2.2.0 -> 2.2.3 (*)一旦2.2.0 (其中2.2.3被适当替换)出现,它就会恢复对旧c3p0的依赖。
+--- org.quartz-scheduler:quartz:2.2.3
| +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12
| \--- c3p0:c3p0:0.9.1.1如果我从JesterJ中排除了tika依赖项,那么一切都很好:
compile('org.jesterj:injest:0.2-SNAPSHOT') {
exclude group:"org.apache.tika"
}让我回到
+--- org.quartz-scheduler:quartz:2.2.3
| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12在我看来,这就像gradle中的一个bug,因为由Y代替的X版本的依赖项不应该添加到Y中,而应该依赖Y来正确处理它自己的依赖项。
最后的解决办法是:
我对Tika的排斥太重了(我真的需要那个!)简洁的解决方案如下所示:(对于所涉及的库)
compile 'org.hibernate:hibernate-c3p0:4.3.11.Final'
compile ('org.quartz-scheduler:quartz:2.2.3') {
exclude group: 'c3p0'
}
compile 'org.quartz-scheduler:quartz-jobs:2.2.3'
compile('org.jesterj:injest:0.2-SNAPSHOT') {
exclude group:"c3p0"
}发布于 2017-02-05 01:30:11
那是你的全部格列德尔文件吗?使用Gradle 3.3,这对我来说是可行的:
apply plugin: 'war'
repositories {
mavenCentral()
}
dependencies {
compile ('org.quartz-scheduler:quartz:2.2.3') {
exclude group: 'c3p0'
}
compile ('org.quartz-scheduler:quartz-jobs:2.2.3') {
exclude group: 'c3p0'
}
}如果我注释掉了exclude,那么我就会看到c3p0 jar在gradle dependencies中列出;正如上面所示,我没有。
https://stackoverflow.com/questions/42045497
复制相似问题