【发布时间】: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