Gradle 包含源文件
Gradle Include Source Files
我有一个项目,其中有两个不同的 'sub-projects',主库和编程语言的编译器,目录结构如下:
- 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'
}
但这并没有帮助。我知道理论上我可以将 srcDirs
从 sourceSets.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
}
我有一个项目,其中有两个不同的 'sub-projects',主库和编程语言的编译器,目录结构如下:
- 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'
}
但这并没有帮助。我知道理论上我可以将 srcDirs
从 sourceSets.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
}