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

How to embed Java code into Gradle build using JavaExec task

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

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

P.S。基于以下评论:

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

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

  1. 将您的 Java 代码放入 /src/main/java 中,就像在常规 Gradle 驱动的 Java 项目中一样。确保它在你要调用的文件中有 main 方法
  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