Gradle:访问项目类&自定义任务的依赖关系

时间:2014-12-02 12:11:03

标签: java gradle

我正在使用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源集取决于模块源集的最佳方法是什么? (理想情况下,不需要重复依赖声明)。

1 个答案:

答案 0 :(得分:0)

不可能将主构建的编译代码添加到buildscript类路径,因为该类路径是在任何任务(例如compileJava)运行之前构造的。相反,您可以实现一个基于类加载器的解决方案,例如sourceSets.main.runtimeClasspath。通常,CustomTask本身不知道这一点,但会使用适当的类路径配置