如何从build.gradle中提取构建脚本



我的build.gradle中有以下buildscript部分:

buildscript {
ext {
nexusUrl = project.hasProperty("myNexusUrl") ? myNexusUrl : "http://10.199.0.99:8081/repository/maven-public/"
}
repositories {
maven { url nexusUrl }
}
dependencies {
classpath group: 'mygroup', name: 'MyGradleLibrary', version: '1.0.1'
}
}

如何将此代码提取到外部文件,以免破坏构建?

从您的库中创建一个插件并将其发布到该 Nexus。然后,在settings.gradle中添加以下行:

pluginManagement {
repositories {
maven {
url "…"
}
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == 'mygroup.gradle-library') {
useModule('mygroup.gradle-library:1.0.1')
}
}
}
}

在这里,您声明要用mygroup.gradle-library:1.0.1依赖项替换mygroup.gradle-library插件。

然后只需在您的build.gradle中添加一个插件:

plugins {
id 'mygroup.gradle-library'
}

现在,您依赖于没有buildscript块的构建类路径。


编辑

为了将其应用于您的所有项目,请将这些行放在 init 脚本~/.gradle/init.gradle($GRADLE_USER_HOME/init.gradle(:

settingsEvaluated {
pluginManagement {
repositories {
maven {
url "…"
}
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == 'mygroup.gradle-library') {
useModule('mygroup.gradle-library:1.0.1')
}
}
}
}
}

之后,plugin块应该可以工作。但是,它只适用于您,而不适用于您的队友,除非他们这样做。

如果你不喜欢plugins你仍然可以通过 init 脚本进行"全局"配置,如演示。详细了解可用的 API。

最新更新