更改Gradle构建目录的组织方式

时间:2019-01-17 22:08:43

标签: 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应该为我做的,对吧?我知道必须有某种方法来做到这一点。我就是不知道这就是为什么我要寻求帮助-我该怎么做?

1 个答案:

答案 0 :(得分:0)

要更改资源的输出,请执行以下操作:

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选项自定义。