繁体   English   中英

Gradle对类二进制目录的依赖

[英]Gradle Dependency on Class Binary Directory

是否有申报一定编译期一和运行时依赖的方式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 )。

我设法利用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'
    }

    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM