0

我的项目依赖于 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 的硬编码路径是没有问题的!)。

4

0 回答 0