Java 类二进制目录的梯度依赖性
在包含二进制(Java 类二进制目录的梯度依赖性,java,intellij-idea,gradle,Java,Intellij Idea,Gradle,在包含二进制(.class)文件的目录上,是否有方法为某个源集声明编译和运行时依赖关系?我的问题是,我在其中一个构建任务中生成了它们,但在从IDE运行/调试时,我需要访问它们 当前,我的sourceset文件的一部分如下所示: sourceSets { library { java { srcDir 'src/library' srcDir 'src/asm' srcDir 'src/parsing'
.class
)文件的目录上,是否有方法为某个源集
声明编译和运行时依赖关系?我的问题是,我在其中一个构建任务中生成了它们,但在从IDE运行/调试时,我需要访问它们
当前,我的sourceset
文件的一部分如下所示:
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 {
// ...
runtime files("$buildDir/dyvilbin") {
builtBy 'someCompilerTask'
}
}
为了在Jar发行版中包含输出文件,我将此代码段添加到Jar
任务中:
task buildREPL(type: Jar, dependsOn: 'someOtherTask') {
from sourceSets.repl.output
from("$buildDir/dyvilbin") {
include '**/*.dyo', '**/*.class'
}
// ...
}
sourceset
a源,非编译类。您更应该将其用作依赖项。