使用gradle将资源,配置文件添加到jar中

Pri*_*tre 71 gradle build.gradle

如何使用gradle将配置文件或任何其他资源添加到我的jar中?

我的项目结构:

src/main/java/com/perseus/.. --- Java包(源文件)

src/main/java/config/*.xml --- Spring配置文件

预期的罐子结构:

com/perseus/.. --- Java包(类文件)

config/*.xml --- Spring配置文件

Pet*_*ser 66

将配置文件从中移动src/main/javasrc/main/resources.

  • @TerribleTadpole 这是正确的解决方案。所有其他都是解决方法。 (3认同)

Wel*_*uza 63

我发现这篇文章搜索如何为资源添加额外的目录.我找到了一个可能对某人有用的解决方案.这是我的最终配置:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "src/main/configs"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个比接受的答案简单得多的解决方案 (3认同)

Pri*_*tre 55

谢谢大家,我正在将现有项目迁移到Gradle,并且不喜欢更改项目结构的想法.

我已经弄清楚了,认为这些信息对初学者有用.

以下是我的'build.gradle'中的示例任务:

version = '1.0.0'

jar {
   baseName = 'analytics'
   from('src/main/java') {
      include 'config/**/*.xml'
   }

   manifest {
       attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 重新配置源集更准确.像`sourceSets.main.resources {srcDirs = ["src/main/java"]; 排除"**/*.java"}`. (31认同)

geo*_*and 23

默认情况下,您添加到的任何文件src/main/resources都将包含在jar中.

如果由于某种原因需要更改该行为,可以通过配置来实现sourceSets.

部分文档包含所有细节

  • 你知道为什么只包含`.../resources /`的内容而不是_resources_目录__with__内容? (4认同)

fla*_*yte 16

我遇到了同样的问题.我在Java包中有一个PNG文件,它没有与源一起导出到最终的JAR中,这导致应用程序在启动时崩溃(找不到文件).

上面的答案都没有解决我的问题,但我在Gradle论坛上找到了解决方案.我在build.gradle文件中添加了以下内容:

sourceSets.main.resources.srcDirs = [ "src/" ]
sourceSets.main.resources.includes = [ "**/*.png" ]
Run Code Online (Sandbox Code Playgroud)

它告诉Gradle在src文件夹中查找资源,并要求它只包含PNG文件.

编辑:请注意,如果您使用的是Eclipse,这将破坏您的运行配置,并且main class not found在尝试运行程序时会出错.为了解决这个问题,我发现的唯一解决方案是将图像移动到另一个目录,res/例如,将其设置为srcDirs而不是src/.

  • 我使用 `+=` 运算符将我的目录添加到现有目录中:例如 `sourceSets.main.resources.srcDirs += [ "src/main/java" ]` (2认同)

归档时间:

查看次数:

116916 次

最近记录:

6 年,5 月 前