web-dev-qa-db-fra.com

Comment définir le nom du projet / groupe / version, ainsi que 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 j'aimerais 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 le grade 1.6.

Ce que j'ai essayé, en échouant à toutes les tentatives:

  • gradle.properties: impossible de modifier le nom (en lecture seule, il faut utiliser un settings.gradle et remplacez le racine nom du projet!); {source,target}Compatibility non pris en compte;
  • settings.gradle: {source,target}Compatibility non pris en compte non plus!

Alors, quelle est la bonne méthode pour y parvenir? Ce que j'ai essayé jusqu'ici dans gradle.properties:

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

Et en settings.gradle:

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

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

EDIT 2 Ceci est maintenant 2014 et le niveau 1.12, et le problème n'est toujours pas résolu ...

78
fge

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
119
Peter Niederwieser

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

  rootProject.name='YourNewName'

Cela prend en charge le téléchargement vers le référentiel (Artifactory avec son plugin pour moi) avec le correct artefactId.

22
zggame

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

jar {
    baseName "core"
}

Avec cette propriété, même si mon nom de projet est "foo", quand je lance gradle install, l'artefact est publié sous le nom core au lieu de foo.

20
Jeff

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 avis indiquant qu'une propriété de projet peut être définie à l'aide d'une fermeture qui sera appelée ultérieurement lorsque le projet sera disponible.

3
Eero Aaltonen

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

0