当前位置: 首页 > 知识库问答 >
问题:

使用DSL的gradle插件是如何工作的?

袁阿苏
2023-03-14
-------Using the plugins DSL:--------------------
plugins {
    id "com.github.edeandrea.xjc-generation" version "1.4"
}

-------Using legacy plugin application:--------
buildscript {
   repositories {
      maven {
        url "https://plugins.gradle.org/m2/"
      }
   }
   dependencies {
      classpath "gradle.plugin.com.github.edeandrea:xjc-generation-gradle-plugin:1.4"
   }
}

apply plugin: "com.github.edeandrea.xjc-generation"

还有settings.gradle中的pluginmangement块控制新的插件方法,我尝试定义repositories{}块并添加mavencentral(),但它不起作用。

简而言之,使用DSL添加的插件是如何工作的,哪个块告诉从哪里找到插件,然后哪一行告诉在类路径中添加它。

更新:对于ex,repositories中的maven块-buildscript部分告诉您在URL“https://plugins.gradle.org/m2/位置和依赖项中的classpath标签下查看插件-buildscript告诉您将此依赖项添加到应用程序类路径中

更正:MavenCentral()

共有1个答案

濮波
2023-03-14

插件DSL可以被认为是应用插件的声明性方式,而遗留插件应用程序可以被认为是必需的。

但是对于新的方法(即使用DSL),它没有说明什么,我所理解的是插件必须在官方的Gradle repo中发布才能访问它,但是build.Gradle文件如何知道在哪里可以找到它,这意味着我们需要添加repositories{}块并在其中指定mavencentral()来使其工作,还是需要添加其他东西?

这在文档:插件标记工件中有详细的解释。

它是mavencentral(),而不是mavencentral()

pluginManagement {
    repositories {
        mavenCentral()
    }
}

rootProject.name = "example"

简而言之,使用DSL添加的插件是如何工作的,哪个块告诉从哪里找到插件,然后哪一行告诉在类路径中添加插件。

这在文档中都有解释:用插件DSL应用插件

 类似资料:
  • 插件DSL正在孵化(incubating)中,请注意,在以后的Gradle版本中,DSL和其它配置可能会改变. 新的插件DSL提供了更为简洁,方便的方式来声明插件的依赖关系。它的适用于与新的Gradle Plugin Portal,同时提供了方便的核心和社区插件.该插件脚本块配置PluginDependenciesSpec的实例. 要应用的核心插件,可以使用短名称: Example 21.5. A

  • 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.

  • 如https://cloud . Google . com/app engine/docs/standard/Java/tools/Gradle-reference上所述,AppEngine Gradle插件提供如下配置: 使用 时,这样的配置应该是什么样子? 我正在查看AppEngine任务,但不明白如何将其连接到适当的Kotlin DSL设置。 编辑 当简单地将上述块添加到<code>buil

  • 想项目中添加插件的新方法不仅仅是一种更为方便的语法.新的DSL语法处理与老方法有很大的不同.新的机制允许Gradle更早更快的确定插件.这允许做更智能的事,如: 优化插件类的加载和重用. 允许不同的插件使用不同版本的依赖关系. 为编辑构建脚本提供关于隐含属性和值的详细信息 这要求插件被指定使Gradle在执行之前剩下的构建脚本前可以很容易并且很快的提取它.还要求插件使用一些静态的定义。 新的插件机

  • 我试图弄清楚如何将此配置转换为静态编程语言DSL,但在示例中找不到太多: 如果使用Kotlin,这个声明会是什么样子?