Gradle: 找不到provided()方法

8

在IT技术中,哪种方式更受欢迎,是使用provided还是provided group,并且这个文档在哪里可以查看?

thufir@doge:~/NetBeansProjects/gradleEAR$ 
thufir@doge:~/NetBeansProjects/gradleEAR$ gradle clean

FAILURE: Build failed with an exception.

* Where:
Build file '/home/thufir/NetBeansProjects/gradleEAR/build.gradle' line: 40

* What went wrong:
A problem occurred evaluating root project 'gradleEAR'.
> Could not find method provided() for arguments [javax:javaee-api:7.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2.991 secs
thufir@doge:~/NetBeansProjects/gradleEAR$ 



plugins {
    id 'com.gradle.build-scan' version '1.8' 
    id 'java'
    id 'application'
    id 'ear'
}

mainClassName = 'net.bounceme.doge.json.Main'

buildScan {
    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
    licenseAgree = 'yes'
}

repositories {
    jcenter()
}

jar {
    manifest {
        attributes 'Main-Class': 'net.bounceme.doge.json.Main'
    }
}

task fatJar(type: Jar) {
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': '3.4.0'
        attributes 'Main-Class': 'net.bounceme.doge.json.Main'
    }
}

dependencies {
    compile group: 'javax.json', name: 'javax.json-api', version: '1.1'
    compile group: 'org.glassfish', name: 'javax.json', version: '1.1'
    provided 'javax:javaee-api:7.0'
}

关于:

如何使用Gradle解决javaee-api依赖以构建EAR文件?

2个回答

9
提供的配置是由war插件添加的(您没有应用),因此在您的情况下不可用。
我建议您使用compileOnly配置,该配置从gradle 2.12+可用。

1
我不太清楚你的实际问题是什么:构建失败的原因还是声明依赖项的首选方式?
构建失败:据我所知,默认情况下没有提供依赖项的"provided"范围,但是您可以将其声明为"compileOnly",这与"provided"相同,并且自Gradle 2.12版本以来受到支持。或者您必须使用一些额外的插件,例如spring boot插件。
或者您必须创建一个自定义配置来支持"provided"依赖项。
声明依赖项的首选方式:"provided"和"provided group"完全相同,使用哪个更多是基于个人意见。在两种情况下,您都声明相同的依赖属性,例如"group"、"name"和"version",唯一的区别是,在其中一种情况下,您更加明确地声明它们。

好的,我尝试分解它,因为你提出了一些要点。 - Thufir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接