93 votes

Comment définir le nom/groupe/version du projet, plus la compatibilité {source,cible} dans le même fichier ?

J'ai l'intention de généraliser l'utilisation de gradle pour mes projets et je voudrais réutiliser le même fichier de construction partout. Malheureusement, j'ai du mal à définir les propriétés mentionnées dans $subject dans un seul fichier, afin de faciliter la migration.

C'est gradle 1.6.

Ce que j'ai essayé, en échouant à chaque fois :

  • gradle.properties : ne peut pas modifier le nom (en lecture seule, il faut utiliser un mot de passe). settings.gradle et remplacer le Racine nom du projet !) ; {source,target}Compatibility ne sont pas prises en compte ;
  • settings.gradle : {source,target}Compatibility ne sont pas non plus pris en compte !

Quelle est donc la méthode correcte pour y parvenir ? Ce que j'ai essayé jusqu'à présent dans gradle.properties :

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!

Et dans settings.gradle :

sourceCompatibility = "whatever";  # not taken into account!

EDIT Eh bien, le problème du "nom" ne peut tout simplement pas être résolu ; pour le reste, j'ai utilisé un autre fichier que j'applique dans le fichier de construction. La gestion du "nom" n'est vraiment pas bonne :/

EDITAR 2 Nous sommes maintenant en 2014 et gradle 1.12, et le problème n'est toujours pas résolu....

138voto

Peter Niederwieser Points 36369

Gradle.properties :

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6

settings.gradle :

rootProject.name = theName

build.gradle :

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility

27voto

zggame Points 112

J'ai trouvé la solution à un problème similaire. J'utilise Gradle 1.11 (version avril 2014). Le nom du projet peut être modifié directement dans settings.gradle comme suit :

  rootProject.name='YourNewName'

Cela prend soin de télécharger vers le dépôt (Artifactory avec son plugin pour moi) avec le bon artifactId.

20voto

Joakim Tall Points 113

J'ai défini le baseName de l'artefact afin qu'il soit indépendant du nom du projet de construction, ce qui me permet d'obtenir ce que vous voulez :

jar {
    baseName "core"
}

Avec cette propriété définie, même si le nom de mon projet est "foo", lorsque j'exécute la commande gradle install l'artefact est publié sous le nom de core au lieu de foo .

5voto

Eero Aaltonen Points 590

Apparemment, cela serait possible dans settings.gradle avec quelque chose comme ça.

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

J'ai récemment reçu un conseil selon lequel une propriété de projet peut être définie en utilisant une fermeture qui sera appelée plus tard lorsque le projet sera disponible.

0voto

Maksim Kostromin Points 961

Utiliser buildSrc avec Gradle Kotlin DSL voir l'exemple complet ici : GitHub daggerok/spring-fu-jafu-example buildSrc/src/main/java/Globals.kt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X