我遇到提供的依赖范围问题。 在我的多项目中,结构如下:
ROOT - 耳朵
Web模块依赖于ejb。
这是我的root build.gradle:
apply plugin: 'ear'
allprojects {
apply plugin: 'java'
apply plugin: 'idea'
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
runtimeClasspath += configurations.provided
}
test {
compileClasspath += configurations.provided
runtimeClasspath += configurations.provided
}
}
idea { module { scopes.PROVIDED.plus += [configurations.provided] } }
dependencies{
provided 'javax.enterprise:cdi-api:1.1'
}
}
dependencies{
deploy project(path: ':web', configuration: 'archives')
deploy project(':ejb')
}
}
在项目ejb中,我定义了提供的依赖项:
dependencies{
provided 'javax.ejb:javax.ejb-api:3.2'
provided 'javax.transaction:javax.transaction-api:1.2'
provided 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final'
}
在网络模块中:
apply plugin: 'war'
dependencies{
providedCompile project(':ejb')
providedCompile 'javax.faces:javax.faces-api:2.2'
providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
}
使用Gradle war插件时,您已启用声明 providedCompile依赖项,告诉编译器包含那些 编译类路径中的依赖项,但不要使Gradle包含 它们在打包的.war工件中。
但是当我提供的自定义包含对war存档的依赖时: ' javax.enterprise:CDI-API:1.1'
答案 0 :(得分:2)
我通过添加以下代码解决了我的问题:
war {
classpath = classpath - configurations.provided
}