java - Gradle:Jar Task不包括扩展名未知的文件

标签 java jar gradle build.gradle

我正在尝试为我的自定义编程语言构建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/

相关文章:

java - 如何打包jar文件在jar文件中包含类

java - Gradle无法识别Java 10+方法

android - Android Studio 中应用级 gradle 文件中 "postprocessing" block 内的 'release' block 是什么?

java - 如何为私有(private)内部类创建别名(使用 XStream)?

java - 调用方法,将变量重命名为新变量

java - Joda Time 从 MutableDateTime 实例中减去 24 小时,我想知道为什么

java - 程序在 catch block 结束之前继续

java - 如何将第三方 jar 添加到本地 Maven 存储库?

java - 从 jar 运行时出错 - 反射 class.forname 异常

android - 卡在启动 gradle 守护进程