Je travaille dans une grande entreprise avec une politique stricte interdisant l’utilisation non filtrée de bibliothèques extérieures. Nous devons tout tirer des référentiels des sociétés bienheureuses, et non pas de l'internet nu, y compris gradle.org.
En utilisant la syntaxe originale du plugin apply de gradle, en conjonction avec un bloc buildscript, je peux ajouter des plugins (bénis) à notre référentiel et les utiliser dans des builds. En d'autres termes:
buildscript {
repositories {
maven { url "https://privaterepo.myemployer.com" }
}
dependencies {
// various dependencies
classpath "org.something:some-plugin:1.0"
...
}
apply plugin: "someplugin"
Au lieu de cela, je veux pouvoir utiliser les nouveaux plugins DSL, c.-à-d.
plugins {
id 'org.something.some-plugin' version '1.0'
}
(Je me rends compte que l'url du dépôt privé aurait besoin d'être défini quelque part)
La nouvelle syntaxe du plugin va toujours à gradle.org et ne semble pas avoir le moyen de fournir une autre URL de téléchargement. Est-ce que quelqu'un connaît un moyen?
J'ai examiné la documentation et l'Internet et je ne trouve pas de réponse. Toutes mes excuses si la réponse est complètement évidente.
Merci beaucoup!
Gradle 3.5 possède une nouvelle fonctionnalité ( incubating ), permettant un contrôle plus précis de la résolution de dépendance des plugins, à l’aide de pluginManagement
DSL :
Les règles de résolution de plug-in vous permettent de modifier les requêtes de plug-in effectuées dans
plugins {}
blocs, par exemple changer la version demandée ou explicitement spécifier les coordonnées de l'artefact d'implémentation.Pour ajouter des règles de résolution, utilisez le
resolutionStrategy {}
à l'intérieur du fichierpluginManagement {}
bloc:Exemple 27.6. Stratégie de résolution des plugins.
settings.gradle pluginManagement { resolutionStrategy { eachPlugin { if (requested.id.namespace == 'org.gradle.sample') { useModule('org.gradle.sample:sample-plugins:1.0.0') } } } repositories { maven { url 'maven-repo' } gradlePluginPortal() ivy { url 'ivy-repo' } } }
Cela indique à Gradle d'utiliser l'artefact d'implémentation de plug-in spécifié au lieu d'utiliser le mappage par défaut intégré du plug-in ID vers Coordonnées Maven/Ivy.
Le bloc
pluginManagement {}
ne peut apparaître que dans settings.gradle fichier, et doit être le premier bloc du fichier. Custom Maven et Ivy les référentiels de plugins doivent contenir en plus des artefacts de marqueurs de plugins aux artefacts qui implémentent réellement le plugin.
Le bloc repositories
à l'intérieur de pluginManagement
fonctionne de la même manière que le bloc pluginRepositories
des versions précédentes.
Avant Gradle 3.5, vous deviez définir le bloc pluginRepositories
dans votre settings.gradle, comme expliqué dans la réponse de sytolk:
Le bloc pluginRepositories {} ne peut apparaître que dans le fichier settings.gradle fichier, et doit être le premier bloc du fichier.
pluginRepositories { maven { url 'maven-repo' } gradlePluginPortal() ivy { url 'ivy-repo' } }
La syntaxe du plugin a un peu changé depuis la dernière version de Gradle et la syntaxe correcte pour Gradle 4.x est la suivante:
pluginManagement {
repositories {
maven {
url 'maven-repo'
}
gradlePluginPortal()
ivy {
url 'ivy-repo'
}
}
}
Ainsi, par exemple, settings.gradle utiliserait votre miroir Nexus interne:
pluginManagement {
repositories {
maven {
url 'https://internal.repo.corporate/repository/gradle-proxy/'
}
}
}
rootProject.name = 'My Project Name'
Plus d'informations peuvent être trouvées dans la documentation du plugin Gradle .
Pour appliquer le paramètre globalement, vous pouvez ajouter à USER_HOME/.gradle/init.gradle comme suit:
allprojects {
repositories {
mavenLocal()
maven { url "https://artifactory.mycompany.com/artifactory/maven-repo" }
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
mavenLocal()
maven { url "https://artifactory.mycompany.com/artifactory/maven-repo" }
}
}
}
Il faut définir pluginRepositories dans les paramètres Gradle
https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories
Le bloc pluginRepositories {} ne peut apparaître que dans le fichier settings.gradle et doit être le premier bloc du fichier.
pluginRepositories {
maven {
url 'maven-repo'
}
gradlePluginPortal()
ivy {
url 'ivy-repo'
}
}