如何将 java 源添加到 gradle buildscript 类路径?

How to add java source onto gradle buildscript classpath?

我有一个 Java class,我想从我的 gradle 构建脚本中调用它:

buildscript {
    dependencies {
        // This is the part I can't figure out...
        classpath files("src/main/java/com/example")
    }
}

import com.example.MyClass

task runner(dependsOn: 'classes') << {
        def text = com.example.MyClass.doIt()
        println text
}

doIt() 方法只是 returns 一个字符串。

项目布局如下:

.
├── build.gradle
└── src
    └── main
        └── java
            └── com
                └── example
                    └── MyClass.java

我知道我需要将 class 添加到构建脚本依赖项中,否则导入无效,但我不明白如何将项目源添加为依赖项构建脚本。我尝试了以下方法:

classpath project
classpath rootProject
classpath project(":gradle-test")
classpath files("src/main/java/com/example")

我走不开

> startup failed:
  build file '/Users/jameselsey/development/james-projects/gradle-test/build.gradle': 8: unable to resolve class com.example.MyClass
   @ line 8, column 1.
     import com.example.MyClass
     ^

  1 error

如何将 MyClass 添加到构建脚本依赖项?

您可以通过两种方式实现这一目标。

  1. 如果您的 Java 代码很小,那么您可以简单地将其转换为 groovy 并将其包含在 gradle 脚本中。

  2. 如果您的代码相当大并且需要多个 classes,首选选项是使用隐式 [buildSrc] 您可以在 buildSrc/src/main/java 下创建 classes,这些 classes 将被编译并放置在构建脚本 classpath 中,并且可以在 gradle 脚本期间使用.

项目源(class、测试classes、资源)在构建脚本期间不可用。因为这会引入循环依赖,因为您需要构建来编译源代码,但构建需要 class 才能执行。

Gradle 文档:http://gradle.org/docs/current/userguide/organizing_build_logic.html#sec:build_sources

示例:https://zeroturnaround.com/rebellabs/using-buildsrc-for-custom-logic-in-gradle-builds/