我有以下gradle配置(基于the docs):
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 libs引用了0.9.2.1 c3p0,但是它有一个不同的组(com.mchange),因此新版本的常规依赖性首选项不会发生。尽管已经在结账时配置了连接验证,但我有奇怪的关闭语句连接池错误。投掷它的代码全部由JPA管理,我不会在任何地方调用...所以我想在这里清理c3p0以确保它不是源于混合版本的问题阶级路径。
答案 0 :(得分:2)
这是您的整个Gradle文件吗?使用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
中列出的gradle dependencies
jar;如上所述,我没有。
答案 1 :(得分:0)
我发现了问题。我使用Michael Easter的裸骨模板作为开始和渐进添加的东西。当我在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中的一个错误,因为版本X的被Y替换的依赖项不应该将它们的依赖项添加到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"
}