gpt4 book ai didi

java - Gradle对类二进制目录的依赖

转载 作者:行者123 更新时间:2023-12-03 06:12:14 26 4
gpt4 key购买 nike

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

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

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'
}

// ...
}

关于java - Gradle对类二进制目录的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com