简体   繁体   English

Gradle配置提供的子项目生成中的依赖关系被忽略

[英]Gradle configuration provided Dependency Ignored in Subproject Build

I have a project with 1 subproject: 我有一个包含1个子项目的项目:

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

In mod1/build.gradle there is a "provided" dependency: mod1/build.gradle有一个“提供的”依赖项:

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

This doesn't seem to work when mod1/src/main/java/One.java imports javax.servlet.ServletContext : 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

Using gradle-4.4.1. 使用gradle-4.4.1。

Am I defining the dependency in an incorrect place? 我在不正确的地方定义了依赖项吗?

Since Gradle 2.12 introduced compileOnly dependencies I rather recommend to use this. 由于Gradle 2.12引入了compileOnly依赖关系,因此我建议使用它。 Especially when it comes to a Servlet API that will be provided by the servlet container once you deploy your web application on eg Tomcat, JBoss, .... 特别是当您将Web应用程序部署在Tomcat,JBoss等上时,Servlet容器将提供Servlet API。

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

provided is a scope used in Maven project that haven't found place in Gradle so far. provided是迄今为止在Gradle中找不到的Maven项目中使用的范围。 But compileOnly is very close to Mavens provided scope. 但是compileOnly非常接近compileOnly provided范围。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM