类二进制目录的Gradle依赖性

时间:2015-11-16 20:36:23

标签: java intellij-idea gradle

有没有办法在包含二进制(sourceSet)文件的目录上声明某个.class的编译和运行时依赖项?我的问题是我在其中一个构建任务中生成了这些,但是在从IDE运行/调试时我需要访问它们。

目前,build.gradle文件的sourceSets部分如下所示:

sourceSets {
    library {
        java {
            srcDir 'src/library'
            srcDir 'src/asm'
            srcDir 'src/parsing'

            runtimeClasspath += library.resources
        }
        resources {
            srcDir "${buildDir}/dyvilbin"

            include '**/*.dyo', '**/*.class'
        }
    }

    compiler {
        java {
            srcDir 'src/compiler'
            compileClasspath += library.compileClasspath
            runtimeClasspath += library.runtimeClasspath
        }
        resources {
            srcDir 'src/resources'

            include '**/*.properties'
        }
    }

    repl {
        java {
            srcDir 'src/repl'
            compileClasspath += compiler.compileClasspath
            runtimeClasspath += compiler.runtimeClasspath
        }
    }
}

不幸的是,使用gradle idea,我的IntelliJ项目编译并启动,但在运行时,build/dyvilbinsrc/resources目录中的类和文件无法解析(ClassNotFoundException

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案,利用了dependencies

dependencies {
    // ...

    runtime files("$buildDir/dyvilbin") {
        builtBy 'someCompilerTask'
    }
}

要将输出文件包含在Jar发行版中,我将此代码段添加到Jar任务中:

task buildREPL(type: Jar, dependsOn: 'someOtherTask') {
    from sourceSets.repl.output

    from("$buildDir/dyvilbin") {
        include '**/*.dyo', '**/*.class'
    }

    // ...
}