Gradle "Bénéficier" de la dépendance plugin Java
Je cherche à compiler plusieurs fichiers WAR, tout ce qui dépend d'un commun POT module. Dans mon build Gradle cependant, je n'arrive pas à obtenir un "Fourni" comme la dépendance à travailler avec le plugin Java.
Ma compilation ressemble à ceci:
apply plugin: 'java'
configurations{
providedCompile
}
dependencies {
compile module("org.springframework.amqp:spring-amqp:${springAmqpVersion}")
compile module("org.slf4j:slf4j-api:${slf4jVersion}")
compile module("org.slf4j:slf4j-ext:${slf4jVersion}")
providedCompile "javax.servlet:servlet-api:${servletApiVersion}"
runtime module("org.slf4j:jcl-over-slf4j:${slf4jVersion}")
runtime module("org.slf4j:jul-to-slf4j:${slf4jVersion}")
runtime module("org.slf4j:log4j-over-slf4j:${slf4jVersion}")
sourceArchives module("org.springframework.amqp:spring-amqp:${springAmqpVersion}:sources")
sourceArchives module("javax.servlet:servlet-api:${servletApiVersion}:sources")
}
sourceSets {
main { compileClasspath += configurations.providedCompile }
}
Cependant, que le dernier bit est là que cela devient une exception. J'ai essayé d'ajouter le servlet-api (Fourni par Tomcat) pour la configuration après l'exécution dépendances à le prolonger, ou tout simplement le mettre dans un de compiler le module, puis en le retirant de dépendances d'exécution plus tard.
J'ai tenté plusieurs méthodes pour modifier les dépendances, avec mes plus proches des résultats:
newRuntime = configurations.runtime.minus(configurations.providedCompile)
configurations.runtime = newRuntime
De ce dernier point toutefois, va générer la variable newRuntime avec les dépendances, cependant quand j'ai essayé de réaffecter la variable de retour à la configuration d'exécution, il jette à un "Impossible de trouver des biens d'exception"
J'ai trouvé beaucoup de discussion de ce problème exact sur Gradle de suivi des bogues de:Gradle-784
Mais le plomb est à partir du Printemps qui utilise Maven avec leur gradle construit, je suis pas familier avec.
Les plus prometteurs lien que j'ai trouvé ici, mais malheureusement je ne pouvais pas obtenir les exemples fonctionnent ainsi: DONC Fournis Question
A noter pour le Dépassement de Pile question de la ligne qui a montré le plus la promesse:
//Include provided for compilation
sourceSets.main.compileClasspath += configurations.provided
Cette ligne ne donnent pas une erreur comme les autres tentatives, il apparaît toutefois que l'providedCompile (Ma version de l') la dépendance n'est pas réellement mis sur la compilation classpath, comme il y a un chemin de classe d'erreur lors de la compilation est tentée.
Double Possible de Comment puis-je définir au moment de la compilation *seulement* classpath dans Gradle?
OriginalL'auteur Chris Lefevre | 2012-09-06
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas à 100% à la suite de votre message, mais providedCompile n'est autorisé que pour la 'guerre' plugin.
Au cours de la 'guerre' étape la servlet pot n'est pas inclus.
Je dirais: ne pas lutter contre l'outil.
OriginalL'auteur Natan Cox
Vous avez ajouté un
providedCompile
de configuration, mais vous ne faites pas quelque chose avec elle. Donc il ne le fera pas sur tout chemin de classe. Pour mettre de la configuration sur le principal de la compilation du chemin de classe, vous pouvez faire:De même, pour le mettre sur le test de la compilation de la classe path:
Sans plus d'informations, je ne peux pas dire quel est le problème. Cette solution fonctionne pour moi. Si vous venez de le faire
configurations.compile.extends configurations.provided
, je pense que la condition des dépendances fin de la Guerre (sans autres contre-mesures).OriginalL'auteur Peter Niederwieser
Vous pouvez utiliser compiler portée à l'intérieur de 'pot' modules et providedCompile à l'intérieur de la 'guerre' module.
De la guerre providedCompile portée de remplacer pot de compiler portée.
OriginalL'auteur Max Shramko