web-dev-qa-db-ja.com

Gradle:提供されたメソッドが見つかりませんでした()

推奨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を構築しますか?

6
Thufir

provided構成はwarプラグイン(適用していない)によって追加されるため、シナリオでは使用できません

Gradle 2.12 +から入手できる compileOnly 構成を使用することをお勧めします

9
lance-java

私にはわかりませんが、実際の質問は何ですか:ビルドの失敗の理由、または依存関係を宣言するための好ましい方法は何ですか?

ビルドの失敗:私が知る限り、デフォルトでは依存関係のprovidedスコープはありませんが、compileOnlyと同じでサポートされているprovidedとして宣言できます。 2.12バージョン以降のGradle。または、SpringBootプラグインなどの追加のプラグインを使用する必要があります。

または、provided依存関係をサポートするカスタム構成を作成する必要があります。

依存関係を宣言するための好ましい方法:providedおよびprovided groupはまったく同じであり、どちらを使用するかはほとんど意見に基づいています。 IMO、それが理由です、あなたはそれについてのいくつかの推奨事項を見つけることができません。どちらの場合も、groupnameversionなどの同じ依存関係プロパティを宣言しますが、唯一の違いは、1つのケースではより明示的に宣言することです。

1
Stanislav