java - 如何使用 JavaExec 任务将 Java 代码嵌入到 Gradle 构建中

标签 java plugins gradle gradle-plugin javaexec-gradle-plugin

我有一个 Gradle 驱动的项目,我想向其中添加一个简单的 Java 任务。这个任务是非常具体的项目,如果它可以帮助我不想将它开发为一个单独的插件。所以问题是我可以在我用于项目的同一个 build.gradle 中定义这样的自定义任务吗?还是我不可避免地需要将其打包为一个单独的项目(插件)并安装到本地仓库?

另外可能重要的是要注意原始项目与 Java 无关(不需要构建其他 Java 代码)

附言基于以下评论:

我想将 src/main/java/SomeUsefulStuff.java 添加到现有项目中,并将该文件编译并用作自定义任务。我知道每次运行构建时都需要对其进行编译,但再次 - 代码会很小。但是它会有一些外部依赖,比如 Commons IO

最佳答案

感谢RaGe谁指出 JavaExec 这原来是非常简单的。以下是您的操作:

  1. 将您的 Java 代码放在/src/main/java 中,就像在常规的 Gradle 驱动的 Java 项目中一样。确保它在您要调用的文件中有 ma​​in 方法
  2. apply plugin: 'java' 添加到 build.gradle
  3. 如果您的 Java 代码对第 3 方库有任何依赖,请将它们添加到 dependencies 部分
  4. 将新任务部分添加到 build.gradle,如下所示:
task usefulStuff(type: JavaExec) {
      classpath = sourceSets.main.runtimeClasspath
      main = 'com.me.gradle.UsefulStuff'
      // arguments to pass to the application
      args 'OhmyGod!'
    }
  1. 现在您可以将该任务称为构建中的任何任务。例如 imporantTask.dependsOn usefulStuff

关于java - 如何使用 JavaExec 任务将 Java 代码嵌入到 Gradle 构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36071615/

相关文章:

gradle - 构建Gradle存储库以进行离线开发

java - Java 将字符串转换为整数

java - 创建指定参数类型或其子类型的 Arraylist

java - ConcurrentHashMap 包含 Map 对象

LESS 的 Eclipse 插件 : How to hide errors of CSS frameworks?

javascript - Grafana,编写一个简单的插件,不使用 grunt 或其他什么

javascript - 重定向插件不起作用

java - 从文件复制/写入文件

android - 在 Android 测试中创建和使用 gradle 或系统属性

gradle - Gradle:删除早于特定时间的文件