Java Gradle忽略从artifacts pom.xml检索时提供的配置的可传递依赖项
我的基于java的项目是使用gradle构建的。构建脚本对jar具有编译依赖关系Java Gradle忽略从artifacts pom.xml检索时提供的配置的可传递依赖项,java,gradle,pom.xml,dependency-management,Java,Gradle,Pom.xml,Dependency Management,我的基于java的项目是使用gradle构建的。构建脚本对jar具有编译依赖关系 dependencies { compile 'com.group:artificat:1.2.3' } 在工件库中存在以下工件pom.xml-1.2.3.jar <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http:
dependencies {
compile 'com.group:artificat:1.2.3'
}
在工件库中存在以下工件pom.xml-1.2.3.jar
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.group</groupId>
<artifactId>artifact</artifactId>
<version>1.2.3</version>
<dependencies>
<dependency>
<groupId>org.jboss.spec.javax.ejb</groupId>
<artifactId>jboss-ejb-api_3.1_spec</artifactId>
<version>1.0.2.Final-redhat-3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
<version>1.0.2.Final-redhat-2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
这个问题有更好的解决办法吗?我怀疑这是否是一个渐变问题。(您是否看到了与
mvn
相同的问题?)。它是提供的
。根据“这与compile非常相似,但表示您希望JDK或容器在运行时提供依赖关系。”特别是,“此作用域仅在编译和测试类路径上可用,并且不可传递。”
如果需要这些依赖项进行编译,则必须按照提供的方式显式列出它们。否则,如果依赖项是指在运行时插入的依赖项,则可能会引入错误的依赖项。我会谨慎地引入名称中带有“redhat”的编译时依赖项。根据Maven POM参考,
提供的
依赖项是不可传递的:
提供了-这与compile非常相似,但表示您希望使用JDK
或者在运行时提供它的容器。它仅在
编译和测试类路径,并且不可传递
您应该明确地声明这些依赖项(正如您所做的那样)
根据经验,如果您的应用程序在没有工件的情况下无法编译,那么该工件应该作为显式依赖项列出
否则,当这个可传递依赖项不再包含在构建中时,您就会遇到麻烦。考虑:
这不是格拉德尔的问题。
dependencies {
provided 'org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:1.0.2.Final-redhat-3'
provided 'org.jboss.spec.javax.servlet:jboss-servlet-api_3.0_spec:1.0.2.Final-redhat-2'
}