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

时间:2015-02-05 00:30:20

标签: gradle

我有一个我想从gradle构建脚本调用的Java类:

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()方法只返回一个字符串。

项目布局如下:

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

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

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 个答案:

答案 0 :(得分:6)

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

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

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

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

    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/