我有一个我想从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
添加到构建脚本依赖项?
答案 0 :(得分:6)
您可以通过两种方式实现这一目标。
如果您的Java代码很小,那么您可以将其简化为groovy并将其包含在gradle脚本中。
如果您的代码相当大并且需要多个类,则首选选项是使用隐式[buildSrc] 您可以在buildSrc / src / main / java下创建类,这些类将被编译并放置在buildscript类路径中,并且可以在gradle脚本中使用。
项目源(类,测试类,资源)在构建脚本期间不可用。因为这会引入循环依赖,因为您需要构建来编译源代码,但构建需要执行类。
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/