首页 > 解决方案 > 更改 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 应该为我做的,对吧?我知道必须有一些方法来做到这一点。我只是不知道怎么做。所以这就是我寻求帮助的原因——我该怎么做?

标签: javagradle

解决方案


要更改资源的输出:

sourceSets.main.output.resourcesDir = "$buildDir/resources"

要更改 JAR 文件的放置位置:

jar {
    // use destinationDir for Gradle < 5.1
    destinationDirectory = buildDir
}

如果您的所有资源都是外部资源,您可能希望将它们从 JAR 文件中排除:

jar {
    include '**/*.class'
    destinationDirectory = buildDir
}

这将只包括.class来自jar任务输入的文件。您可以使用includeexclude选项对此进行自定义。


推荐阅读