Gradle配置在子项目构建中提供了依赖关系

时间:2017-12-22 07:06:19

标签: java gradle build.gradle

我有一个包含1个子项目的项目:

projroot/
    settings.gradle
    build.gradle
    mod1/
        build.gradle

mod1/build.gradle中有一个“提供”依赖项:

apply plugin: 'java'
configurations {
    provided
}
repositories {
    mavenCentral()
}
dependencies {
    provided group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

mod1/src/main/java/One.java导入javax.servlet.ServletContext时,这似乎不起作用:

> Task :mod1:compileJava FAILED
/home/x/groot/mod1/src/main/java/One.java:1: error: package javax.servlet does not exist
import javax.servlet.ServletContext;
                    ^
1 error

...
BUILD FAILED in 0s
2 actionable tasks: 1 executed, 1 up-to-date

使用gradle-4.4.1。

我是否在不正确的地方定义了依赖关系?

1 个答案:

答案 0 :(得分:0)

由于Gradle 2.12引入了compileOnly个依赖项,我建议使用它。特别是当涉及Servlet容器时,一旦您将Web应用程序部署在例如servlet容器上,它将由servlet容器提供。 Tomcat,JBoss,....

dependencies {
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

provided是Maven项目中使用的范围,到目前为止还没有在Gradle中找到它。但是compileOnly非常接近Mavens provided范围。