Oli*_*ain 9 gradle android-gradle-plugin
我们有一个Gradle构建,其中包含buildSrc一些自定义插件.这些插件适用于其他插件.例如,我们的插件适用com.android.tools.build:gradle.对于在编译期间库需要在Gradle的类路径上的注释处理.所以,把它放在我们的主要build.gradle工作中:
buildscript {
repositories {
google()
}
dependencies {
classpath "com.android.tools.build:gradle:$gToolsVersion"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这意味着对于用户应用此插件,他们必须(1)应用我们的插件和(2)添加该buildscript样板.似乎这不应该是必要的.我们也可以project.buildscript在我们的插件中添加一个块,但这似乎也是不必要的,由于这个bug是有问题的:https://developer.android.com/studio/build/gradle-plugin-3-0-0.html?utm_source = android-studio#known_issues.
我将com.android.tools.build:gradle依赖项添加buildSrc/build.gradle为runtime依赖项.这似乎应该工作:我认为这告诉Gradle为了运行我的插件,库(及其依赖项)需要在类路径上.但是,gradle buildEnvironment(以及我们的构建失败的事实)清楚地表明情况并非如此.
所以,问题:
runtime指定的依赖项buildSrc/build.gradle和常规build.gradle中块中classpath指定的依赖项之间的区别是什么buildscript?buildSrc,并没有要还添加buildscript块到他们build.gradle?我遇到了一个稍微不同的问题,并找到了一个可以接受的解决方案,可能有助于解决您的第二个问题:我想buildSrc/build.gradle在 root 中应用相同的存储库并两次build.gradle。
repositories.gradle在项目根目录中:
repositories {
if (project.hasProperty('nexus')) {
maven {
url 'http://localhost:8081/repository/JCenter/'
}
maven {
url 'http://localhost:8081/repository/Maven_Google/'
}
} else {
jcenter()
google()
}
}
ext {
androidGradleBuildToolsDependency = 'com.android.tools.build:gradle:3.1.3'
}
Run Code Online (Sandbox Code Playgroud)
buildSrc/build.gradle:
buildscript {
apply from: '../repositories.gradle'
}
allprojects {
apply from: '../repositories.gradle'
}
dependencies {
// androidGradleBuildToolsDependency is defined in repositories.gradle
implementation androidGradleBuildToolsDependency
}
Run Code Online (Sandbox Code Playgroud)
根build.gradle:
buildscript {
apply from: 'repositories.gradle'
}
allprojects {
// this line will also be executed from the build.gradles in subprojects, so the working
// directory isn't always the same, so we use the absolute path here
apply from: "${rootProject.projectDir}/repositories.gradle"
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要像平常那样需要根块classpath内的依赖项。中的依赖项似乎会自动应用它。buildscriptbuild.gradleimplementationrepositories.gradle
build.gradle当通过依赖项提供 s时,我的解决方案可能不起作用。
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |