gpt4 book ai didi

java - Gradle 包含源文件

转载 作者:行者123 更新时间:2023-12-01 11:18:34 25 4
gpt4 key购买 nike

我有一个项目,其中有两个不同的“子项目”,主库和编程语言的编译器,目录结构如下:

- build.gradle
- src
- library
- compiler
- ...

我的 build.gradle 看起来像这样:

sourceSets
{
library
{
java
{
srcDir 'src/library'
srcDir 'src/asm'
}
}
compiler
{
java
{
srcDir 'src/compiler'
}
}
//...
}

// ...

task buildLib(type: Jar, dependsOn: 'classes') {
from sourceSets.library.output
classifier = 'dyvil-library'
}

task buildCompiler(type: Jar, dependsOn: 'classes') {
from sourceSets.compiler.output
classifier = 'dyvil-compiler'
}

我的问题是,每当我尝试运行 buildCompiler 任务时,构建都会失败,并且 Java 编译器在编译器源代码引用库中的类的地方给出数百个错误。我已经尝试让编译器依赖于库类,如下所示:

task buildCompiler(type: Jar, dependsOn: [ 'classes', 'libraryClasses' ]) {
from sourceSets.compiler.output
classifier = 'dyvil-compiler'
}

但这并没有帮助。我知道理论上我可以将 srcDirssourceSets.library 复制到 sourceSets.compiler 中,如下所示:

compiler
{
java
{
srcDir 'src/library'
srcDir 'src/asm'
srcDir 'src/compiler'
}
}

但是出于显而易见的原因,这似乎是一个坏主意。

是否有另一种方法可以在编译编译器时包含库中的源文件(duh)?

最佳答案

有一个类似的问题on SO here .

我在本地复制了您的情况,解决方法是向 compiler 的 sourceSets 添加一行,如下所示:

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

关于java - Gradle 包含源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31516362/

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