我有一个基于java的gradle插件,可以为我们的gradle项目进行一些常见的配置。现在,我想添加以下任务(当前存在于每个项目的build.gradle中)
task javadocJar(type: Jar) {
classifier = "javadoc"
from javadoc
}
我需要的是关于如何在基于java的gradle插件中执行此操作的提示。
在另一个插件中,我已经使用项目注册了任务。getTasks()。创建(“myTask”,myTask.class)
我试图谷歌的解决方案,但到目前为止,我没有找到一个有用的汤,因为我找到的一切都是使用groovy或类似于我剪上面直接在build.gradle.
提前感谢!
看起来我找到了一个解决方案,至少是针对javadoc任务。。。
Task javadocTask = project.getTasks().getByName("javadoc");
project.getTasks().create("javadocJar", Jar.class, task -> {
task.dependsOn(javadocTask);
task.setClassifier("javadoc");
task.from(javadocTask);
});
这似乎有效。。。但现在我对下一个gradle任务有一个问题:
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
到目前为止,我还没有找到一种方法来掌握Java中的变量集。
提前感谢!:)
对asettoufs评论的回应:
您链接的文档与包含子项目的项目相关。我拥有的是多个不相关的单个项目。对于这些,我们有一个插件,它已经应用了一些插件并配置了它们。因此,通过应用我们的插件,这些项目有一个共同的配置。
我们的插件是用java编写的。并且应该继续是java。现在我们想把一些更常见的构建配置移到插件中——例如上面提到的一些基本任务。
要获得源代码集,您可以询问惯例
project.getTasks().create("sourceJar", Jar.class, task -> {
task.setClassifier("sources");
// grab the convention that holds the sourceSets
JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
// find our source set
SourceSet mainSourceSet = javaConvention.sourceSets.findByName('main');
// user `from` like normal
task.from(mainSourceSet.getAllSource());
});
一些源代码,看看JavaPlugin
如何创建源集
写在Java
创建java约定https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java#L266
创建源集https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java#L298
我有一些与jdbc相关的通用代码,我想单独打包到一个可运行的jar中,其中已经包含了所需的jdbc库,因此每个数据库类型都有一个单独的可运行jar。源代码将保持不变,但打包的jdbc jar将不同。 例如jdbc app postgres。jar将只包含postgres jdbc jar,而jdbc应用程序mysql。jar将包含mysql jdbc jar。 是否可以使用gradle对任务或任何
我最近开始实现Gradle发布插件。我已经经历了https://github.com/researchgate/gradle-release#custom-释放步骤。 该插件正在将SNAPSHOT版本更新为发布版本,将当前SNAPSHOT版本更新为下一个版本。gradle发布任务也在执行编译、构建步骤。我在Jenkins中自动执行了此操作。我尝试了“构建任务 = []" 但构建任务仍已执行。我找不
我在做一个多项目分级配置。 但没有成功。 当我打印每个子项目的task编号时,它会显示NativeBinaries项目直到第一个任务执行之后仍为零任务。 编辑: null
问题内容: 我正在用Gradle创建一个构建过程,我想提供一个使用Java代码的插件。Gradle 插件文档 说 这是可能的: 您可以使用任何喜欢的语言来实现自定义插件,前提是该实现最终会编译为字节码。对于此处的示例,我们将使用Groovy作为实现语言。如果需要,可以改用Java或Scala。 但是,经过数小时的谷歌搜索和阅读之后,我还没有找到有关如何使用Java创建Gradle自定义插件的任何说
我想创建一个自动应用其他插件(外部插件)的插件。这需要在调用“apply plugin”之前设置插件的buildscript依赖项。然而,我似乎无法在插件中添加buildscript依赖项,或者我得到:您无法更改未处于未解析状态的配置! 有解决办法吗? 我的示例(非工作)代码:
我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,