我正在使用buildSrc方法编写自定义Gradle任务(使用Java)。我想要实际引导核心模块的Spring上下文的任务,所以自定义任务类看起来像:
buildSrc/main/java/CustomTask.java:
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
public class CustomTask extends DefaultTask {
@TaskAction
public void run() {
ApplicationContext context = new ClassPathXmlApplicationContext("core-context.xml");
}
}
但是,由于Spring不可用,任务无法编译。 Spring当然是核心模块的编译依赖。
告诉Gradle buildSrc源集取决于模块源集的最佳方法是什么? (理想情况下,不需要重复依赖声明)。
答案 0 :(得分:0)
不可能将主构建的编译代码添加到buildscript类路径,因为该类路径是在任何任务(例如compileJava
)运行之前构造的。相反,您可以实现一个基于类加载器的解决方案,例如sourceSets.main.runtimeClasspath
。通常,CustomTask
本身不知道这一点,但会使用适当的类路径配置。