我的项目依赖于 Pax Exam 框架。除其他外,我声明了对 Pax 的这些依赖项 (PAX_EXAM_VERSION = 3.4.0):
compile group: 'org.ops4j.pax.exam', name: 'pax-exam-junit4', version: PAX_EXAM_VERSION
compile group: 'org.ops4j.pax.exam', name: 'pax-exam-container-native', version: PAX_EXAM_VERSION
这两个都依赖于org.ops4j.pax.exam:pax-exam-spi
,这是导致我的问题的模块。
所以,当我尝试构建我的项目时,报告的错误是这个:
Could not resolve org.ops4j.pax.exam:pax-exam-spi:3.4.0
...
Could not parse POM http://repo.maven.apache.org/maven2/org/ops4j/pax/exam/pax-exam-spi/3.4.0/pax-exam-spi-3.4.0.pom
Unable to resolve version for dependency 'com.google.guava:guava:jar'
我努力了:
- 从我所依赖的模块的传递依赖项中排除
pax-exam-spi
(但请注意,我仍然需要其中的类才能编译),将 Guava 添加到我的一级依赖项中,然后尝试pax-exam-spi
使用transitive = false
(won' t 工作,与上述相同的问题)。 与上面相同,但不是做
transitive = false
,而是尝试使用artifact-only notation,如下所示:编译“org.ops4j.pax.exam:pax-exam-spi:${PAX_EXAM_VERSION}@jar”
我知道问题的根源在于 guava 版本没有在 中声明pax-exam-spi pom
,而是在其父级exam
中声明,它只声明了在 2 个不同配置文件的依赖管理会话中使用的 Guava 版本(这在 Maven 中有效,因为其中一个如果未设置属性,则激活配置文件,如果设置了该属性,则激活glassfish.release
另一个)。但是,到目前为止,知道这一点还没有用:(
请让我知道是否有任何不那么 hacky 的方法来确保 Gradle 确实pax-exam-spi
在我的类路径中包含 's jar,但甚至不尝试解析它的 POM(特别是指 jar 的硬编码路径是没有问题的!)。