我的项目取决于Pax考试框架。我在其中声明了这些对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添加到我的第一级依赖项中,然后尝试生成{ {1}}使用pax-exam-spi
的第一级依赖关系(不起作用,与上述问题相同)。与上述相同,但不是transitive = false
,而是尝试使用artifact-only notation,如下所示:
编译“org.ops4j.pax.exam:pax-exam-spi:$ {PAX_EXAM_VERSION} @jar”
我知道问题的根源是guava版本没有在transitive = false
中声明,而是在其父pax-exam-spi pom
中声明,它只声明了2种不同的Guava版本profiles的dependencyManagement会话(这在Maven中有效,因为如果未设置属性exam
,则激活其中一个配置文件,如果设置该属性,则激活另一个配置文件)。但是,到目前为止,知道这一点并没有用处:(
请告诉我是否有任何不那么糟糕的方法来确保Gradle在我的类路径中包含glassfish.release
的jar,但是甚至没有尝试解析其POM(特别是指的是罐子的硬编码路径是不可能的!)。