2017-08-22 2 views
2

Qui est preferred, provided ou provided group et où est-ce documented?Gradle: Impossible de trouver la méthode fournie()

[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 [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 
[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 'javax:javaee-api:7.0' 
} 

En ce qui concerne:

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

Répondre

2

La configuration provided est ajoutée par le plug-in war (que vous ne demandez pas) il est donc pas disponible dans votre scénario

Je vous suggère d'utiliser la configuration compileOnly qui est disponible à partir gradle 2.12+

1

Il est pas clair pour moi, quelle est votre question réelle: des raisons de l'échec de la construction ou ce qui est la voie privilégiée de déclarer les dépendances? Échec de construction: autant que je sache, il n'y a pas de portée provided pour les dépendances par défaut, mais vous pouvez le déclarer comme compileOnly qui est le même que provided et supporté par Gradle depuis la version 2.12. Ou vous devez utiliser des plugins supplémentaires, comme un plugin de démarrage de printemps.

Ou vous devez créer une configuration personnalisée pour supporter provided dépendances.

Méthode préférée pour déclarer les dépendances: provided et provided group sont les mêmes et celles qui sont basées principalement sur les opinions. OMI, qui est la raison, vous ne pouvez pas trouver des recommandations à ce sujet. Dans les deux cas, vous déclarez les mêmes propriétés de dépendance, comme group, name et version, la seule différence que, dans un cas, vous le faites de manière plus explicite.

+0

bien, J'ai essayé de le casser à cause des points que vous avez soulevés. – Thufir