我正在用Gradle创建一个构建过程,我想提供一个使用Java代码的插件。Gradle
插件文档 说
这是可能的:
您可以使用任何喜欢的语言来实现自定义插件,前提是该实现最终会编译为字节码。对于此处的示例,我们将使用Groovy作为实现语言。如果需要,可以改用Java或Scala。
但是,经过数小时的谷歌搜索和阅读之后,我还没有找到有关如何使用Java创建Gradle自定义插件的任何说明。似乎您可以在以下目录中为其创建代码:
<rootProjectDir>/buildSrc/src/main/java/
MyGradlePlugin.java
MyGradleTasks.java
但是问题就变成了:
您可以像对Groovy一样引用插件类吗?
src/main/resources/META-INF/gradle-plugins/myjavaplugin.properties
implementation-class=org.me.MyGradlePlugin
我意识到我可以使用project.javaexec
或调用Java代码JavaExec
,但是我担心这会使我的构建过程变得不那么容易移植。
这是一个基本的,独立的,基于Java的Gradle插件,以及使其工作的步骤:
<projectRoot>/plugin
目录更改为目录$ gradle uploadArchives
此步骤(非常重要)将编译Java代码并将其放入本地Maven存储库(../repo)中。<projectRoot>/consumer
$ gradle checkitout
projectRoot /插件/src/main/java/org/joefernandez/gradle/MyJavaPlugin.java
package org.joefernandez.gradle;
import org.gradle.api.Project;
import org.gradle.api.Plugin;
public class MyJavaPlugin implements Plugin<Project> {
@Override
public void apply(Project target) {
target.task("javaTask");
}
}
projectRoot /插件/src/main/java/org/joefernandez/gradle/MyJavaTask.java
package org.joefernandez.gradle;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
public class MyJavaTask extends DefaultTask {
@TaskAction
public void javaTask() {
System.out.println("Hello from MyJavaTask");
}
}
projectRoot /插件/src/main/resources/META-INF/gradle-plugins/test-
plugin.properties
implementation-class=org.joefernandez.gradle.MyJavaPlugin
请注意 uploadArchives 任务:您必须运行此任务以使插件可用于使用者脚本。
projectRoot /插件/build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
apply plugin: 'maven'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
group = 'org.joefernandez'
version = '1.0-SNAPSHOT'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
projectRoot /插件/settings.gradle
rootProject.name = 'MyJavaPlugin'
projectRoot / build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
projectRoot /消费者/build.gradle
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'org.joefernandez',
name: 'MyJavaPlugin',
version: '1.0-SNAPSHOT'
}
}
apply plugin: 'test-plugin'
task checkitout(type: org.joefernandez.gradle.MyJavaTask) {
println("running consumer task!")
}
我有个小问题。 我创建了自定义gradle插件(独立插件),并将它从mavenlocal包含在我的简单项目中。它正在工作,但我不知道如何在我的插件中设置系统属性。更多细节:在我的插件中,在任务中,我想设置系统属性(system.setproperty(key,value))并从我的主应用程序中获取它的属性,例如在main类main方法中,但main方法不使用此属性 当我在构建中创建任务时。grad
我为gradle创建了一个简单的基于groovy的插件。 在我的毕业典礼上。构建文件我有以下内容: 一切都很好,我得到了一个构建目录和一个. jar在lib文件夹中生成,我想这是独立的插件。 现在我想知道如何将这个新插件注册到我的gradle安装中,这样我就可以应用插件了:“myPlugin”我做了以下工作: 将插件放入安装中的插件文件夹 创建了myplugin.properties文件并将其包含
问题内容: 我正在尝试创建一个具有自定义形状(六边形)的按钮,但其行为类似于普通的JButton(即与ActionListener一起使用)。 我创建了一个扩展AbstractButton的类,但是单击它似乎不会向ActionListener发送事件。如果我更改类以扩展JButton,则它可以很好地工作,但是会弄乱按钮的显示方式。我假设有一种方法需要重写才能引发事件,但是我不知道它是什么。 问题答
下面的这些代码可以帮助您通过CSS文件和SCSS文件,创建和编译 CSS 和 JS 文件的source-maps。 安装依赖 为了运行编译和压缩任务,你必须安装 node 和 npm。 命令行 // (Optional) Install Gulp module globally npm install gulp -g // Install fullpage's build dependen
问题内容: 我想问一个与这个问题相同的问题,但使用SWT:是否有一种方法可以制作带有您自己的按钮图形的按钮,而不仅仅是按钮内的图像?如果不是,这是在Java中创建自定义按钮的另一种方法吗? 问题答案: public class ImageButton extends Canvas { private int mouse = 0; private boolean hit = false;
我正在使用私有Maven存储库的有限开发环境中工作。里面有一个Gradle插件,我正在尝试使用它。然而,我认为它没有遵循Gradle插件的预期命名和目录结构,所以当我使用PluginDSL时,我的构建失败了。在Maven存储库中,插件的结构如下: 当我使用以下定义使用 Gradle 插件 DSL 引用此插件时: 我的构建版本出现错误,抱怨它找不到.plugin但是,似乎没有通过插件DSL来指示插件