buildscript { repositories { google() }}
allprojects { repositories { google() }}
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.3' }}
apply plugin: 'com.android.application'
我希望将其迁移到使用pluginsdependenciesspec
启用的新插件DSL。
于是我:
>
在settings.gradle中声明了存储库:
pluginManagement { repositories { google() }}
plugins { id "com.android.application" version "3.1.3" }
要让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')}")
}
}
}
}
然后,您可以使用新的插件
DSL应用android插件:
plugins {
id 'com.android.application'
}
或
plugins {
id 'com.android.library'
}
想项目中添加插件的新方法不仅仅是一种更为方便的语法.新的DSL语法处理与老方法有很大的不同.新的机制允许Gradle更早更快的确定插件.这允许做更智能的事,如: 优化插件类的加载和重用. 允许不同的插件使用不同版本的依赖关系. 为编辑构建脚本提供关于隐含属性和值的详细信息 这要求插件被指定使Gradle在执行之前剩下的构建脚本前可以很容易并且很快的提取它.还要求插件使用一些静态的定义。 新的插件机
插件DSL正在孵化(incubating)中,请注意,在以后的Gradle版本中,DSL和其它配置可能会改变. 新的插件DSL提供了更为简洁,方便的方式来声明插件的依赖关系。它的适用于与新的Gradle Plugin Portal,同时提供了方便的核心和社区插件.该插件脚本块配置PluginDependenciesSpec的实例. 要应用的核心插件,可以使用短名称: Example 21.5. A
新插件{}块不支持任意Groovy代码.被限制的原因是为幂等(每次产生相同的结果)和无副作用(为了Gradle随时执行的安全). 形式是: plugins{ id «plugin id» version «plugin version» } «plugin id»和«plugin version»必须是常量,字面量,字符串.其他语句都是不允许的;他们的存在会导致编译错误. 插件{}块也必
E:/home/example/documents/gradle-com.example.hello-plugin/src/main/kotlin/com/example/helloplugin.kt:(11,27):以下任何函数都不能用提供的参数调用: public抽象fun register(P0:String,p1:Class,vararg p2:any!):在org.gradle.api.
还有中的块控制新的插件方法,我尝试定义块并添加,但它不起作用。 简而言之,使用DSL添加的插件是如何工作的,哪个块告诉从哪里找到插件,然后哪一行告诉在类路径中添加它。 更新:对于ex,repositories中的maven块-buildscript部分告诉您在位置和依赖项中的classpath标签下查看插件-buildscript告诉您将此依赖项添加到应用程序类路径中 更正:
如https://cloud . Google . com/app engine/docs/standard/Java/tools/Gradle-reference上所述,AppEngine Gradle插件提供如下配置: 使用 时,这样的配置应该是什么样子? 我正在查看AppEngine任务,但不明白如何将其连接到适当的Kotlin DSL设置。 编辑 当简单地将上述块添加到<code>buil
我不知道如何在带有kotlin DSL的gradle构建中使用shadow插件。所有文档都使用groovy dsl。 这是build.gradle.kts的内容: 这是的内容 但是当我尝试进行 时,我收到此错误: 我认为这很奇怪,因为我已经在参数中输入了应用程序主类。 我试着加上这个: 但是当我尝试使用此选项构建时,它抱怨它找不到类型。 我到底做错了什么?
目前不能使用一次添加一个插件到多个项目中的模式,如使用subprojects{}等方式.目前没有机制可以应用一次插件到多个项目.目前,每个项目都必须在自己的构建脚本中的plugins{}块中声明应用的插件. Gradle的未来版本将删除此限制. 如果新语法的限制让人望而却步,推荐使用buildscript{} block.