我正在尝试为我的自定义编程语言构建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'
}
关于java - Gradle:Jar Task不包括扩展名未知的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518549/