问题标签 [gradle-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
739 浏览

gradle - 从 Gradle 任务中跟踪(和删除)输出文件

使用 Google protobuf-gradle-plugin,它可以根据大量 proto 文件输入生成多个文件。运行任务时,只能看到所有已输出的文件,而不是先验地确定输出将是什么。

当需要清理项目时,挑战就来了。Gradle 似乎将跟踪输出文件,可从AbstractTask.getOutputs().getPreviousFiles(). 那是 Gradle 内部的,所以我怀疑你可以依赖它。如果要删除所有输出文件,最好的方法是什么?

  1. 一种可能性是将输出文件夹限制为构建目录,这样如果将其删除,则所有生成的文件都将消失。

  2. 另一种是在输出目录中创建一个清单,该清单将跟踪所有创建的文件,然后它将知道要删除什么。

这里有什么建议?

0 投票
2 回答
129 浏览

gradle-plugin - 解决gradle自定义插件中的依赖关系的问题

我在 maven 中开发了一个实用程序。我想在 gradle 和 maven 自定义插件中使用 maven 自定义插件的那个 maven 实用程序,这个实用程序工作正常,但是如果是 gradle 插件,它会引发以下问题。

例外是:

Gradle 插件是用 java 开发的。

我的实用程序的 Pom 文件如下:

0 投票
1 回答
86 浏览

gradle - 如何在 gradle build 的配置阶段从 xml 文件中读取配置?

我有很多要迁移到 gradle 的 ant 项目。所有项目都有一个共同的config.xml文件。该文件存在的原因与构建无关,但我想将其信息保存在一个地方,因此我也在 ant 构建期间对其进行评估。

我创建了一个带有 PluginExtension 和 ParserTask 的自定义插件。PluginExtension 允许用户提供config.xml路径作为属性。ParserTask 自动或使用提供的路径定位文件,并在找到时解析文件。然后,它使用来自config.xml.

这是完美的工作,但有一个主要缺点:由于解析是在一个任务中完成的,PluginExtension 的各个属性没有填充config.xml我构建的配置阶段的信息。这会导致我的构建文件中出现各种臭名昭著的变通方法,因为我无法在配置阶段设置档案基名或在该阶段配置清单,因此我需要在执行阶段更新此信息。

如何config.xml在构建期间解析 ,以便在配置阶段属性已经填充了正确的值?

将配置信息移动到属性文件并config.xml在构建期间重新生成不是一种选择,因为我还需要将 ant 构建维护一段时间。此外,我需要config.xml归档成为版本控制的一部分。

编辑:尽管我自己找到了答案,但我仍然对其他回复感兴趣,特别是如果他们解决了我留下的缺点。

0 投票
1 回答
1153 浏览

java - 自定义插件扩展中的嵌套对象

我正在开发一个自定义 Gradle 插件,我想定义一个配置闭包(插件扩展),如下所示:

我有这个课程:

而且,在插件项目中,我以这种方式创建扩展:

但是在我的客户端项目中,当我应用和配置如上所示的插件时,出现此错误:

找不到 Gradle DSL 方法:'property2()'

如何property2在我的班级中定义闭包MyPluginExtension

编辑

我试过这个:

但现在我得到这个错误:

未找到 Gradle DSL 方法:a1()

它无法解析嵌套的闭包字段。

0 投票
1 回答
2507 浏览

liquibase - Liquibase Gradle 插件 -> updateSQL 命令

我已经建立了一个使用 Liquibase Gradle 插件的 gradle 项目。

我正在尝试使用liquibase 输出中描述的功能

当我执行 gradle updateSQL 时,基本上任务会输出终端中的每个更改(我尝试使用它并将命令的输出放在“gradle updateSQL > changes.sql”之类的命令中,但这还包括我以后无法运行的东西,除此之外有所有的变化,而不仅仅是更新)。

我正在尝试使用命令 updateCountSql (描述说“编写 SQL 以将下一个更改集应用到 STDOUT。”)我尝试为此任务输入参数,但我无法使其工作(不断收到错误“The Liquibase updateCountSql 命令需要一个值”),有人知道它是如何工作的吗?

我只需要跟踪数据库上的更改,并能够创建包含所有更改的脚本。

提前致谢。

0 投票
1 回答
3420 浏览

groovy - 使用动态对象组配置 gradle 插件扩展的正确方法

我正在尝试编写自己的 gradle 插件,它需要能够配置一组对象 - 这些对象中有多少以及它们被称为什么取决于用户。

用于创建具有高级可定制性的自定义 gradle 插件的文档非常差。它提到project.container()了做这种事情的方法,但我不知道如何让它在我的用例中工作。

这是我的插件配置 DSL 的一个示例:

这是我的插件扩展对象,允许我对其进行配置:

扩展以标准方式连接到我的插件中:

这工作正常,但它是一种非常丑陋的配置风格,并不是典型的 gradle DSL 的风格。

如何将我的插件配置 DSL 更改为如下所示:

0 投票
1 回答
45 浏览

java - app:preDexDebug 在使用 android studio 调试启动时出现异常,当包含 java 库项目时

我遇到了一个非常奇怪的问题,android studio 仅在尝试启动调试会话时给我以下异常,但该项目将编译得很好。
应用程序项目是一个非常基本的活动项目(使用那里的向导创建)。

该项目包括一个外部 java 库,它本身编译得很好。当我进行清理/重建时,一切都会按预期完美地清理和编译。只有当我尝试运行包含库的调试会话时,才会出现异常。

当我将 java 库作为依赖项删除时,项目启动得很好

我尝试使用 --stacktrace/--debug 运行,但没有任何信息有帮助。

版本信息:构建工具:23.0.0 Android studio 1.4 Gradle 插件 1.3.1 Gradle 2.2.1

当我采用相同的 java 库
并将其作为依赖项添加到较旧的 android 项目时,一切正常,因此新项目设置向导/创建导致问题。

有没有人遇到过这个问题,或者在将java lib添加到android项目时我需要做些什么特别的事情。

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:app:preDexDebug”执行失败。

    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' 完成非零退出值 1

  • 尝试:使用 --info 或 --debug 选项运行以获得更多日志输出。

  • 例外是:org.gradle.api.tasks.TaskExecutionException:任务':app:preDexDebug'的执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 在 org.gradle .api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) at org.gradle.api.internal .tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 在 org.gradle.api.internal.tasks。

0 投票
0 回答
1736 浏览

gradle - 如何更改 zip 中的目标文件夹以用于 gradle 分发插件

我正在使用 gradle 分发插件创建一个 zip 文件:

在 zip 中,文件被放入一个名为<basename>-<version>eg的文件夹installer-0.2.1-SNAPSHOT中,我希望它们直接放在 zip 的根目录中,这可能吗?

0 投票
1 回答
782 浏览

gradle - Gradle 自定义插件:如何使用预期在构建脚本中设置的属性配置 Gradle 任务

我正在尝试编写一个自定义 Gradle 插件,我需要使用我希望构建脚本 (build.gradle) 提供的属性在我的项目上配置一个“Zip”任务。

这是我的 build.gradle 脚本的相关部分:

这是我的插件代码,目前没有达到我的预期:

我希望能够在我的插件的“应用”方法中读取 project.oozie.sourceSets 等属性的值。

但是,在调用我的自定义插件的“应用”方法时,project.oozie.sourceSets 的值为空,因为尚未执行设置该属性值的 build.gradle 脚本。

我该如何解决这个问题?

谢谢!

0 投票
1 回答
1273 浏览

groovy - Gradle 分发插件:将子项目中的文件添加到单独的文件夹中

我有一个带有子项目 projectB 和 projectC 的多项目构建 (projectA)。每个子项目都有我想添加到 zip 中的资源。projectB 的资源应位于 zip 中名为 projectB 的文件夹中。

我正在使用分发插件来创建 zip。此代码有效,但我会使用一些代码,无论子项目的数量和名称如何。

我尝试了以下方法:

但这不会编译。

任何建议如何做到这一点?