【问题标题】:Gradle - Java compile ignoring non-java source filesGradle - Java编译忽略非Java源文件
【发布时间】:2014-08-13 10:35:29
【问题描述】:

我在 java 项目中有一些 .properties 文件和 .java 文件。当 Gradle 编译时,它似乎只接受 .class 文件并在制作 jar 时忽略 .properties 文件和 .csv 文件。

谁能告诉我们如何获取 .properties 文件,.csv 文件也被编译到 classes 文件夹中?

例如,如果我的项目有以下文件,

"src/main/java/com/spcapitaliq/test/Test.java"
"src/main/java/com/spcapitaliq/test/Test.properties"
"src/main/java/com/spcapitaliq/test/Test.csv"

我只看到类文件夹中的 Test.class 而不是 Test.properties 和 Test.csv 文件。你能告诉我如何在 gradle 编译过程中包含 .properties 文件和 .csv 文件吗?在 Eclipse 中,它同时带来了 gradle compile 忽略了这一点。

以下是我在“gradle.build”文件中的SourceSet条目,

sourceSets
    {
        main
        {
            java
            {
                srcDir 'src/main/java’
            }
            resources
            {
                srcDir 'src/main/resources'compileClasspath = configurations.runtime + fileTree(dir:"$project.HOME_DIR/$project.SERVICE_NAME/lib", includes: ['*.jar'])
            }
    }

【问题讨论】:

  • 为什么要把 .properties 和 .csv 放在名为 java 的文件夹中? src/main/java 文件夹仅用于 java 源。我强烈建议您遵循 gradle(和 maven)的合理约定,并将这些文件放在 src/main/resources 中。看起来这些文件实际上应该位于 src/test/java 和 src/test/resources 中(如果它们仅用于测试)。
  • 谢谢兰斯。是的,我可以将它们放入资源文件夹。我已将 .csv 文件放在资源文件夹中。但是将 .properties 与 .java 文件保持在同一位置,以避免在资源文件夹中创建相同的包结构。还可以在与 .java 文件相同的位置查看文件,以便于查看。在 Maven 中,我们可以这样做并要求 Maven 在编译期间使用 include 标签包含所有文件。想知道 Gradle 是否也有类似的事情。顺便说一句,你是对的,我必须将这些文件放在 src/test 文件夹中,而不是我会做的 src/main 文件夹中。感谢您的信息。
  • 正如我所说,src/main/java 和 src/test/java 仅适用于 java 文件。您可以破解 maven 和 gradle 以在这些文件夹中查找资源,但您不应该这样做。我不会在这里帮你,因为这是个坏主意。使用你的工具...不要滥用它们;)
  • 工具是用来支持开发者的,而不是相反。当然,理解为什么默认设置是有意义的,但是这些工具可以精确地定制,以允许开发人员在他们想要/需要的时候做这样的事情。

标签: java compilation gradle


【解决方案1】:

只需将所需的文件添加到默认的 processResources 任务中:

processResources {
  from ('src/main/java') {
    include '**/*.properties'
    include '**/*.csv'
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2013-10-19
    • 2012-07-05
    • 2015-05-27
    • 1970-01-01
    • 2012-08-26
    • 2021-08-25
    相关资源
    最近更新 更多