Gradle: Jar 任务不包含扩展名未知的文件
Gradle: Jar Task doesn't include Files with unknown extensions
我正在尝试为我的自定义编程语言构建 library.jar
。该库包含用该语言编写的 Java 类 和 类。我已经设法编译编译器,运行 它在这些 类 上并在名为 dbin
.
的文件夹中生成输出文件
- src
- ...
- build
- ...
- dbin
- Foo.class
- Custom.dyo // <- the new file type
- build.gradle
我想要实现的是将 dbin
目录中的所有文件复制到 Jar 文件中,我尝试使用以下脚本:
task buildLib(type: Jar, dependsOn: [ 'classes', 'compileDyvilLibrary' ]) {
from sourceSets.library.output
// Include Compiler Output
from fileTree(dir: 'dbin', includes: [ '**/*.class', '**/*.dyo' ])
baseName = 'dyvil-library'
}
问题是,虽然明确包含,但 jar 文件不包含任何 .dyo
个文件。
from
行在配置时执行,(即在任何任务 运行 之前)如果文件不存在于您在 fileTree
时指定的目录位置实例化后它将不包含任何文件。
您可以尝试通过使 from
方法执行延迟计算来解决此问题:
from { fileTree(dir: 'dbin', includes: [ '**/*.class', '**/*.dyo' ]) }
您可能还想试试这个语法:
from ('dbin') {
include '**/*.class'
include '**/*.dyo'
}
我正在尝试为我的自定义编程语言构建 library.jar
。该库包含用该语言编写的 Java 类 和 类。我已经设法编译编译器,运行 它在这些 类 上并在名为 dbin
.
- src
- ...
- build
- ...
- dbin
- Foo.class
- Custom.dyo // <- the new file type
- build.gradle
我想要实现的是将 dbin
目录中的所有文件复制到 Jar 文件中,我尝试使用以下脚本:
task buildLib(type: Jar, dependsOn: [ 'classes', 'compileDyvilLibrary' ]) {
from sourceSets.library.output
// Include Compiler Output
from fileTree(dir: 'dbin', includes: [ '**/*.class', '**/*.dyo' ])
baseName = 'dyvil-library'
}
问题是,虽然明确包含,但 jar 文件不包含任何 .dyo
个文件。
from
行在配置时执行,(即在任何任务 运行 之前)如果文件不存在于您在 fileTree
时指定的目录位置实例化后它将不包含任何文件。
您可以尝试通过使 from
方法执行延迟计算来解决此问题:
from { fileTree(dir: 'dbin', includes: [ '**/*.class', '**/*.dyo' ]) }
您可能还想试试这个语法:
from ('dbin') {
include '**/*.class'
include '**/*.dyo'
}