问题标签 [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.
gradle - 从 Gradle 任务中跟踪(和删除)输出文件
使用 Google protobuf-gradle-plugin,它可以根据大量 proto 文件输入生成多个文件。运行任务时,只能看到所有已输出的文件,而不是先验地确定输出将是什么。
当需要清理项目时,挑战就来了。Gradle 似乎将跟踪输出文件,可从AbstractTask.getOutputs().getPreviousFiles()
. 那是 Gradle 内部的,所以我怀疑你可以依赖它。如果要删除所有输出文件,最好的方法是什么?
一种可能性是将输出文件夹限制为构建目录,这样如果将其删除,则所有生成的文件都将消失。
另一种是在输出目录中创建一个清单,该清单将跟踪所有创建的文件,然后它将知道要删除什么。
这里有什么建议?
gradle-plugin - 解决gradle自定义插件中的依赖关系的问题
我在 maven 中开发了一个实用程序。我想在 gradle 和 maven 自定义插件中使用 maven 自定义插件的那个 maven 实用程序,这个实用程序工作正常,但是如果是 gradle 插件,它会引发以下问题。
例外是:
Gradle 插件是用 java 开发的。
我的实用程序的 Pom 文件如下:
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
归档成为版本控制的一部分。
编辑:尽管我自己找到了答案,但我仍然对其他回复感兴趣,特别是如果他们解决了我留下的缺点。
java - 自定义插件扩展中的嵌套对象
我正在开发一个自定义 Gradle 插件,我想定义一个配置闭包(插件扩展),如下所示:
我有这个课程:
而且,在插件项目中,我以这种方式创建扩展:
但是在我的客户端项目中,当我应用和配置如上所示的插件时,出现此错误:
找不到 Gradle DSL 方法:'property2()'
如何property2
在我的班级中定义闭包MyPluginExtension
?
编辑
我试过这个:
但现在我得到这个错误:
未找到 Gradle DSL 方法:a1()
它无法解析嵌套的闭包字段。
liquibase - Liquibase Gradle 插件 -> updateSQL 命令
我已经建立了一个使用 Liquibase Gradle 插件的 gradle 项目。
我正在尝试使用liquibase 输出中描述的功能
当我执行 gradle updateSQL 时,基本上任务会输出终端中的每个更改(我尝试使用它并将命令的输出放在“gradle updateSQL > changes.sql”之类的命令中,但这还包括我以后无法运行的东西,除此之外有所有的变化,而不仅仅是更新)。
我正在尝试使用命令 updateCountSql (描述说“编写 SQL 以将下一个更改集应用到 STDOUT。”)我尝试为此任务输入参数,但我无法使其工作(不断收到错误“The Liquibase updateCountSql 命令需要一个值”),有人知道它是如何工作的吗?
我只需要跟踪数据库上的更改,并能够创建包含所有更改的脚本。
提前致谢。
groovy - 使用动态对象组配置 gradle 插件扩展的正确方法
我正在尝试编写自己的 gradle 插件,它需要能够配置一组对象 - 这些对象中有多少以及它们被称为什么取决于用户。
用于创建具有高级可定制性的自定义 gradle 插件的文档非常差。它提到project.container()
了做这种事情的方法,但我不知道如何让它在我的用例中工作。
这是我的插件配置 DSL 的一个示例:
这是我的插件扩展对象,允许我对其进行配置:
扩展以标准方式连接到我的插件中:
这工作正常,但它是一种非常丑陋的配置风格,并不是典型的 gradle DSL 的风格。
如何将我的插件配置 DSL 更改为如下所示:
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。
gradle - 如何更改 zip 中的目标文件夹以用于 gradle 分发插件
我正在使用 gradle 分发插件创建一个 zip 文件:
在 zip 中,文件被放入一个名为<basename>-<version>
eg的文件夹installer-0.2.1-SNAPSHOT
中,我希望它们直接放在 zip 的根目录中,这可能吗?
gradle - Gradle 自定义插件:如何使用预期在构建脚本中设置的属性配置 Gradle 任务
我正在尝试编写一个自定义 Gradle 插件,我需要使用我希望构建脚本 (build.gradle) 提供的属性在我的项目上配置一个“Zip”任务。
这是我的 build.gradle 脚本的相关部分:
这是我的插件代码,目前没有达到我的预期:
我希望能够在我的插件的“应用”方法中读取 project.oozie.sourceSets 等属性的值。
但是,在调用我的自定义插件的“应用”方法时,project.oozie.sourceSets 的值为空,因为尚未执行设置该属性值的 build.gradle 脚本。
我该如何解决这个问题?
谢谢!
groovy - Gradle 分发插件:将子项目中的文件添加到单独的文件夹中
我有一个带有子项目 projectB 和 projectC 的多项目构建 (projectA)。每个子项目都有我想添加到 zip 中的资源。projectB 的资源应位于 zip 中名为 projectB 的文件夹中。
我正在使用分发插件来创建 zip。此代码有效,但我会使用一些代码,无论子项目的数量和名称如何。
我尝试了以下方法:
但这不会编译。
任何建议如何做到这一点?