我有一个通过三重配置的项目:
在顶级build.gradle 中声明存储库:
buildscript { repositories { google() }}
allprojects { repositories { google() }}
Run Code Online (Sandbox Code Playgroud)在顶级build.gradle 中声明类路径依赖项,以便从相应的存储库中下载插件工件
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.3' }}
Run Code Online (Sandbox Code Playgroud)然后,在 app build.gradle文件中,应用插件:
apply plugin: 'com.android.application'
Run Code Online (Sandbox Code Playgroud)我想这个迁移到使用新的插件DSL由为启用PluginsDependenciesSpec。
然后我:
在settings.gradle 中声明存储库:
pluginManagement { repositories { google() }}
Run Code Online (Sandbox Code Playgroud)在 app build.gradle 中声明插件依赖:
plugins { id "com.android.application" version "3.1.3" }
Run Code Online (Sandbox Code Playgroud)但这无法解决:
FAILURE:构建失败,出现异常。
其中:构建文件“…/build.gradle”行:2
出了什么问题:在以下任何来源中都找不到插件 [id: 'com.android.application', version: '3.1.3']:
Gradle 核心插件(插件不在“org.gradle”命名空间中)
- 插件存储库(无法解析插件工件 'com.android.library:com.android.library.gradle.plugin:3.1.3')
在以下存储库中搜索:
- 谷歌
- BintrayJ中心
- 行家(https://maven.fabric.io/public)
- Gradle 中央插件库
我缺少什么让 Gradle 连接这里的点,以便它可以将 plugin.id 连接到从适当的存储库中获取的适当的 JAR?
在 中,pluginManagement您可以使用resolutionStrategy和强制使用存储库中的特定工件google()。
pluginManagement {
repositories {
google()
}
resolutionStrategy {
eachPlugin {
if (requested.id.id in ['com.android.application', 'com.android.library']) {
useModule("com.android.tools.build:gradle:${getProperty('version.plugin.android')}")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用新的pluginsDSL 应用 android 插件:
plugins {
id 'com.android.application'
}
Run Code Online (Sandbox Code Playgroud)
或者
plugins {
id 'com.android.library'
}
Run Code Online (Sandbox Code Playgroud)
这是文档。
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |