Comment partager une commune à construire.gradle par l'intermédiaire d'un référentiel?
Je suis à la recherche d'un portage maven build de gradle. Une caractéristique de maven est pom héritage lequel je peux déclarer une variété de comportement courant dans un pom, les publier dans un référentiel, puis l'utiliser via le <parent>
élément dans un projet concret.
Mon Q est simplement de savoir si il existe un équivalent de comportement dans gradle?
J'ai déjà fait ceci en ant+ivy par l'importation d'un commun build.xml qui s'appuie sur d'avoir déjà vérifié l'emplacement de la commune build.xml à partir de la source de contrôle ou d'utiliser quelque chose comme svn:externals. Je peux répéter cette approche, sans réelle difficulté, mais cela semble être une chose maven n'très bien, de sorte qu'il serait agréable de voir quelque chose de semblable dans gradle.
Vous devez vous connecter pour publier un commentaire.
Il y a deux possibilités:
Publier un script de création d'un serveur web, et de l'inclure avec
apply from: "http://path/to/script.gradle"
Écrire un plugin Gradle, publier sous la forme d'un Pot à une Maven ou Ivy référentiel, et de l'inclure avec:
La deuxième option est plus compliqué, mais aussi un peu plus puissant. Par exemple, le plugin Pots seront mis en cache, alors que la distance des scripts de génération actuellement ne sera pas. En général, je recommande de commencer avec 1., et de passer à 2. si et une fois qu'il devient nécessaire. Dans l'avenir, Gradle sont susceptibles d'offrir un mécanisme qui combine la facilité d'utilisation de 1. avec les avantages des 2.
Plugin
interface emballé comme un Pot. Le guide de l'utilisateur qui explique comment celui-ci est réalisé.apply from: url
ne fonctionne qu'avec des pas http https , cela est-il documenté?Ma solution actuelle est l'option 3; package de la commune de scripts dans un bocal en tant que ressources et puis unjar au cours de la buildscript section comme
Ce qui semble faire ce que je veux.
Bâtiments sur Matt solution, j'ai trouvé le suivant à être un peu plus propre:
Juste mes deux cents. 🙂
J'ai une réponse et une autre question:
Tout d'abord, pour accéder à un fichier partagé à partir d'un référentiel (c'est à dire Nexus) vous pouvez construire une URL qui comprend une requête:
Je l'ai fait pour notre projet et il fonctionne très bien. Je peux gérer le " build-commun.gradle fichier dans un autre projet SVN et de les télécharger sur Nexus comme un INSTANTANÉ. L'URL ci-dessus (avec les valeurs insérées pour "serveur-url', 'repository-nom" et " nom-groupe) trouve le dernier INSTANTANÉ de mon .gradle script que j'ai téléchargé. Pas besoin de l'emballer dans un bocal.
Ma version:
Voici une amélioration de la solution retenue, pour quand vous avez plus d'une dépendance dans le buildscript:
A fonctionné comme un charme pour moi.
J'aime votre approche @user3394219
J'ai écrit un petit plugin de faire la même chose:
ou
https://plugins.gradle.org/plugin/com.orctom.applyscript
settings.gradle
lors de l'initialisation, mais je reçoisError:Cause: org.gradle.initialization.DefaultSettings_Decorated cannot be cast to org.gradle.api.Project
Une lecture directe de la commune de script dans un bocal comme la façon suivante. Unpackaging le pot n'est pas nécessaire.
s'appliquent à partir de: ce.getClass().getClassLoader().getResource("chemin vers la dépendance.gradle")