问题标签 [gradle-custom-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 投票
4 回答
4652 浏览

gradle - 在单元测试中以编程方式调用 gradle 任务图

我正在为 gradle 编写自定义插件,作为单元测试的一部分,我想调用我的任务,但前提是它的先决任务已被执行。

不幸的是,实际的插件是一个内部项目,所以我不能确定确切的来源,但我准备了一个单元测试来演示这个问题:

输出是:

如果您想快速运行测试,可以在 github 上找到该项目。

另一种说法而不是写作方式:

我想运行相当于:

在单元测试中。

0 投票
1 回答
547 浏览

groovy - 我错过了什么方法?project.apply 插件上的 MissingMethodException:'customPlugin'

我错过了什么方法?我得到一个 MissingMethodException

这是我的代码:

--EnvPluginTest.groovy

--env.properties

--EnvPlugin.groovy

0 投票
2 回答
137 浏览

java - 如何允许用户更改 Gradle 中插件使用的库版本?

在我的插件中,我从一个库中调用静态引导方法MutationCoverageReport.main(arg),该库是我的插件的编译依赖项。我想允许插件用户更改应该使用的库版本(假设所选版本具有兼容的 API)。

我可以建议用户从我的插件中排除传递依赖,并在他的 build.gradle 中手动将请求版本中的库添加到 buildscript.dependencies.classpath,但这不是很优雅:

我希望能够在我的配置闭包中使用 libVersion 参数,但是我尝试过的两个解决方案存在一些问题。

1.我可能需要从我的插件(原始库版本及其依赖项)中删除传递依赖项,并在请求的版本(来自配置闭包)中添加一个库作为 buildscript 依赖项。

在 afterEvaluate 中为时已晚(配置已解决),我在成功连接 beforeEvaluate 时遇到了问题(是否为单个模块项目触发?)。

2.我可以更改用于从库中执行静态方法的类路径。

为此,我可以创建一个自定义类加载器,它会在委托给父类加载器之前使用我的库类(在请求的版本中)。我还必须MutationCoverageReport.main(arg)使用新的类加载器用反射调用替换一个衬里。

也许有一种更简单的方法可以通过调用上述方法的插件来修改类路径?

主要问题。允许插件用户定义插件执行的库版本的最佳方法是什么?

0 投票
1 回答
1346 浏览

java - 使用来自 Gradle 插件的单独类路径执行 Java 类

在我的插件中,我需要从外部 JAR 执行静态引导方法来执行分析。目前我直接从代码中调用它MutationCoverageReport.main(arg),但这迫使我在我的插件中创建一个编译时依赖项,在执行插件时很难修改(选择不同的 JAR 版本)。

我想使用反射来调用它,并在 Gradle 代码中找到了一些示例,例如WorkerProcessBuilderor JavaExecHandleBuilder。不过它们在org.gradle.process.internal包中,我不确定是否建议从外部插件中使用它。

问题。Gradle 插件从具有指定类路径的外部类运行任意 Java 方法的推荐方法是什么?

顺便说一句,我宁愿不使用Ant任务,因为它是一个单独的项目和另一个抽象层,具有潜在的错误和限制。

0 投票
2 回答
1471 浏览

java - 如何依赖 Gradle 中的所有 *compile 和 *testCompile 任务

我想在animalSniffer插件中,一项任务依赖于所有sourceSets中所有生产类(Java、Groovy、Scala)的编译,第二个任务依赖于所有sourceSets中所有测试类的编译(可能是单独的testintegrationTest)。

我不想依赖*classes任务,因为*classes任务应该依赖animalSniffer任务(它会在编译后检测 Java 版本 API 不兼容并可以停止构建)。

在 Gradle 中是否有比检查AbstractCompile任务名称的实例是否以“compileTest”开头更好的方法来实现这一点?

0 投票
1 回答
515 浏览

gradle - 允许 Gradle 插件使用其配置有条件地应用其他插件

在插件中,我希望能够根据用户在我的插件的配置闭包中放置的配置来选择其他插件的应用(例如 Nexus 插件或 Bintray 插件,但不能同时使用两者) 。

我通常会在评估项目后获得我的插件的配置。这为时已晚,因为我希望允许用户自己覆盖其他插件的默认配置(因此必须更早应用它们)。

我可以将我的插件分成两个单独的插件(在同一个 JAR 中),并要求应用第一个插件,提供配置闭包,应用第二个插件并使用为第一个插件提供的配置来决定应用哪些 3rd 方插件。

有没有更好的方法让我的插件足够早地获得配置,以便能够有条件地应用其他插件(并允许它们使用它们的配置闭包)?

0 投票
1 回答
259 浏览

gradle - 如何针对测试项目目录测试自定义 gradle 任务

我有这样的任务自定义 gradle 插件:

我对其进行了集成测试:

但它失败了,因为我在任务中的命令"git rev-list HEAD --count".execute().text.toInteger()是针对我的项目目录而不是针对我的测试目录"build/tmp/git-repository"执行的。

是否可以在测试项目目录中执行此任务?

更新:

感谢@Mark Vieira 和@Rene Groeschke。根据他们的建议,我以这种方式修复了它:

0 投票
1 回答
282 浏览

php - 创建自定义插件时出现错误“您没有足够的权限访问此页面”

我在 wordpress 中创建了自定义插件,用于从数据库中获取数据。我添加了两个链接来对记录执行操作。一个是编辑,另一个是删除。我已经为这样的删除链接编写了代码

当我单击删除链接时,它会显示错误,例如

我的插件代码是

那么如何调用 delete_my_review() 函数来执行删除操作呢?

0 投票
2 回答
1709 浏览

gradle - 如何在 Gradle 插件中设置任务属性

我正在创建一个 gradle 插件来应用 sonar-runner 插件并默认许多值,例如声纳主机 URL 和声纳 JDBC URL。我不知道如何设置属性。

当我在 build.gradle 中进行设置时,我使用:

我的 gradle 插件看起来像:

有了这个设置,我得到了一个No signature of method例外。我应该如何设置这些属性?

0 投票
1 回答
526 浏览

java - Gradle:多个子任务共享同一个扩展变量对象

我创建了一个这样的自定义 Gradle 插件,

DummyPlugin.java

虚拟任务.java

DummyExtension.java

现在,我为不同的环境创建了三个任务,如下所示:

但是,在跑步时,我得到./gradlew dummyCI的不是得到,而是得到。也一样。Env of dummy is ciEnv of dummy is test./gradlew dummyDev

我该如何解决这个问题?谢谢。