2017-08-22 2 views
1

Pourquoi Gradle ne trouve-t-il pas la méthode provided lorsque c'est la syntaxe specified de Maven?Gradle: Impossible de trouver la méthode fournie() (groupe)

[email protected]:~/NetBeansProjects/gradleEAR$ 
[email protected]:~/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 [{group=javax, name=javaee-api, version=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: 8.684 secs 
[email protected]:~/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 group: 'javax', name: 'javaee-api', version: '7.0' 
} 

En ce qui concerne:

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

Répondre

1

Pour utiliser les dépendances construire avec provided champ Maven. Vous pouvez configurer votre build.gradle à ce qui suit:

configurations { 
    provided 
} 

sourceSets { 
    main.compileClasspath += configurations.provided 
    test.compileClasspath += configurations.provided 
    test.runtimeClasspath += configurations.provided 
} 

puis encore utiliser vos dépendances comme:

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

Ou vous pouvez suivre compileOnly façon de le faire comme:

dependencies { 
    ... 
    compileOnly 'javax:javaee-api:7.0' 
} 

Comme également mentionné dans le dépôt central maven here

+0

L'option 'compileOnly' a fonctionné; téléchargé javaee-api-7.0.pom et associé, puis construit le 'EAR' - semble bon. Pourquoi la page maven donne-t-elle des instructions différentes? Lire votre lien vers le bon manuel, thx. – Thufir

+0

@Thufir je ferais confiance plutôt https://search.maven.org/#artifactdetails%7Cjavax%7Cjavaee-api%7C7.0%7Cjar – nullpointer