【发布时间】:2014-01-05 16:17:10
【问题描述】:
在我的 build.gradle 文件中,我在依赖项中有一行:
compile group: 'org.jboss.seam.validation', name: 'seam-validation-api', version:'3.1.0.Final'
当我尝试运行项目时,例如'test' 任务,我得到一个错误:
> Could not resolve org.jboss.seam.validation:seam-validation-api:3.1.0.Final.
Required by:
com.smspl.mc5:mc5-web-ui:1.0.0-SNAPSHOT
com.smspl.mc5:mc5-web-ui:1.0.0-SNAPSHOT > com.smspl.mc5:mc5-common-rest:1.0.0-SNAPSHOT
> Could not parse POM /Users/amorfis/.m2/repository/org/jboss/seam/validation/seam-validation-api/3.1.0.Final/seam-validation-api-3.1.0.Final.pom
> Unable to resolve version for dependency 'javax.enterprise:cdi-api:jar'
> Could not parse POM https://nexus.softwaremill.com/content/groups/smlcommon-repos/org/jboss/seam/validation/seam-validation-api/3.1.0.Final/seam-validation-api-3.1.0.Final.pom
> Unable to resolve version for dependency 'javax.enterprise:cdi-api:jar'
我知道问题在于 seam-validation-api pom 中未指定“javax.enterprise:cdi-api:jar”的版本。它是在它的父级中指定的,而 gradle 可能在弄清楚它时遇到了一些问题。 seam-validation-api pom 的父部分如下所示:
<parent>
<groupId>org.jboss.seam.validation</groupId>
<artifactId>seam-validation-parent</artifactId>
<version>3.1.0.Final</version>
<relativePath>../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
我的直觉告诉我问题的一部分。我还尝试通过在 build.gradle 'dependencies' 中添加新行来显式添加此父依赖项,但没有任何运气。
有人知道解决办法吗?
更新:在父 pom 中:
<groupId>org.jboss.seam.validation</groupId>
<artifactId>seam-validation-parent</artifactId>
<packaging>pom</packaging>
<version>3.1.0.Final</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>seam-bom</artifactId>
<version>${seam.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
【问题讨论】:
-
能贴出父POM的相关部分吗?
cdi-api的版本是否在父 POM 中的<dependency-management>下指定?是否下载过父 POM? -
是的,validation-api 的版本(我认为这就是你的意思?)在
<depdenency-management>下指定,并且下载了父 pom,但我怀疑 gradle 是否做到了。可能是maven。 (我正在尝试将此模块从 maven 移动到 gradle) -
我的意思是组 ID
javax.enterprise和工件 IDcdi-api的依赖项。这是 Gradle 版本无法解析的模块(请参阅错误消息)。 -
好的,我现在明白了。谢谢。我添加了 seam-validation-api pom 片段,您可以在其中看到没有给出 cdi-api 的版本。它也不在父 pom 中。在 seam-validation-parent 中指定了 bom,但是......我也没有在 bom 中找到 cdi-api 版本。想知道 Maven 是从哪里得到它的吗?
-
不。看起来 pom 编辑是唯一的选择,直到它在 gradle 中修复。
标签: gradle dependency-management