是否可以将自定义Java库导入Gradle buildSrc Java类?
我用Java编写了一个定制的Gradle任务,它生成一个Java文件。我的任务位于我的项目的buildSrc目录中。 我想扩展这个任务,但我需要从另一个项目访问我的自定义Java库
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
import my.custom.java.library.*;
public class AutoGenerateTask extends DefaultTask {
@TaskAction
public void generate() {
...
// java code
...
}
}
我是格拉德尔的新手,我不知道这是否可能
# 1 楼答案
是的,有可能。可以使用Gradle复合构建将其他依赖项包含到构建逻辑中
假设
让我们先做一些假设:
简化结构
project-custom-lib/build.gradle.kts
project-custom-lib/settings.gradle.kts
project-custom-lib/src/main/java/xx/oo/Demo.java
project-app/settings.gradle.kts
project-app/buildSrc/src/kotlin/com.example.java-conventions.gradle.kts
解决方案
第一步:使
buildSrc
显式buildSrc
是一个特殊的文件夹,隐式地作为includeBuild
处理。但是,它目前不支持包含其他版本(Gradle 7.0)。因此,我们必须首先明确地打破这一规则这一步很简单。只需将文件夹重命名为
buildSrc
以外的名称,例如build-conventions
,并为其创建一个空的settings.gradle.kts
:然后将
build-conventions
包含在project-app/settings.gradle.kts
中:这些更改不应破坏您的项目构建。您现在可以构建它:
第2步:使
中可解析project-custom-lib
的类在build-conventions
实际上,Gradle在Composite Builds中描述了如何做到这一点:
我们先把这一行添加到
project-app/build-conventions/settings.gradle.kts
中:然后在
project-app/build-conventions/build.gradle.kts
中添加依赖项:现在,您应该能够在代码中导入它: