java - 更改 Gradle 的构建目录的组织方式
问题描述
所以,我最近(部分)用 Gradle 完成了一个 Java 项目。重要的是,该项目使用绝对路径来访问我的资源文件夹中的文件,因为这些文件会在 JAR 生成后更改。当我使用 Eclipse 的“导出为可运行的 JAR”功能时,我得到了一些完美的东西 - 将 .jar 文件放在我的主目录中可以让它找到所有东西。但是,使用 Gradle 的 build 函数并没有,因为 Gradle 在 .jar 和资源之间添加了额外的层。为了演示,这是我的“正常”目录:
./program root directory
|_program.jar
|_resources
|_[actual resources]
这是 Gradle 创建的目录:
./build folder
|_libs
| |_program.jar
|_resources
|_main
|_[actual resources]
我对 Gradle 的要求是:
./build folder
|_program.jar
|_resources
|_[actual resources]
是的,我可以手动移动目录中的资源和 program.jar 来实现这一点,但这感觉不对 - 这正是 Gradle 应该为我做的,对吧?我知道必须有一些方法来做到这一点。我只是不知道怎么做。所以这就是我寻求帮助的原因——我该怎么做?
解决方案
要更改资源的输出:
sourceSets.main.output.resourcesDir = "$buildDir/resources"
要更改 JAR 文件的放置位置:
jar {
// use destinationDir for Gradle < 5.1
destinationDirectory = buildDir
}
如果您的所有资源都是外部资源,您可能希望将它们从 JAR 文件中排除:
jar {
include '**/*.class'
destinationDirectory = buildDir
}
这将只包括.class
来自jar
任务输入的文件。您可以使用include
和exclude
选项对此进行自定义。