[英]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/dyvilbin
和src/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.