在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'
}
}
如何将这段代码提取到外部文件中,以免破坏构建?
答案 0 :(得分:0)
从您的媒体库中创建一个插件,然后将其发布到该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
依赖项替换mygroup.gradle-library:1.0.1
插件。
然后在您的build.gradle
中添加一个插件:
plugins {
id 'mygroup.gradle-library'
}
现在,您可以在没有buildscript
块的情况下依赖于构建类路径。
编辑
为了将其应用于您的项目所有,请将这些行放在init script ~/.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
,您仍然可以通过示例脚本来执行“全局”配置。 Read more关于可用的API。