Gradle: Could not find method provided()

血红的双手。 提交于 2020-01-01 05:15:30

问题


Which is preferred, provided or provided group and where is this documented?

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'
}

In reference to:

How does Gradle resolve the javaee-api dependency to build an EAR?


回答1:


The provided configuration is added by the war plugin (which you are not applying) so it's not available in your scenario

I suggest you use the compileOnly configuration which is available from gradle 2.12+




回答2:


It's not clear to me, what is your actual question: reasons of the build failure or what is preferred way to declare dependencies?

Build failure: as far as I know, there are no provided scope for dependencies by default, but you can declare it as compileOnly which is the same as provided and supported by Gradle since 2.12 version. Or you have to use some additional plugins, like a spring boot plugin.

Or you have to create a custom configuration to support provided dependencies.

Preferred way to declare dependencies: provided and provided group are just the same and which to use is mostly opinion based. IMO, that is the reason, you can't find some recommendations about it. In both cases you declare the same dependency properties, such as group, name and version, the only difference, that in one case you do it more explicitly.



来源:https://stackoverflow.com/questions/45808984/gradle-could-not-find-method-provided

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!