如何使用gradle将配置文件或任何其他资源添加到我的jar中?
我的项目结构:
src / main / java / com / perseus / .. --- Java包(源文件)
src / main / java / config / * .xml --- Spring配置文件
预期的jar结构:
com / perseus / .. --- Java包(类文件)
config / * .xml --- Spring配置文件
答案 0 :(得分:58)
将配置文件从src/main/java
移至src/main/resources
。
答案 1 :(得分:52)
谢谢大家,我正在将现有项目迁移到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
}
}
答案 2 :(得分:45)
我发现这篇文章搜索了如何为资源添加额外的目录。我找到了一个可能对某人有用的解决方案。这是我的最终配置:
sourceSets {
main {
resources {
srcDirs "src/main/resources", "src/main/configs"
}
}
}
答案 3 :(得分:22)
答案 4 :(得分:14)
我遇到了同样的问题。我在Java包中有一个PNG文件,并且它没有与源一起导出到最终的JAR中,这导致应用程序在启动时崩溃(找不到文件)。
上述答案都没有解决我的问题,但我在Gradle论坛上找到了解决方案。我将以下内容添加到build.gradle
文件中:
sourceSets.main.resources.srcDirs = [ "src/" ]
sourceSets.main.resources.includes = [ "**/*.png" ]
它告诉Gradle在src
文件夹中查找资源,并要求它只包含PNG文件。
编辑:请注意,如果您使用的是Eclipse,则会破坏运行配置,并且在尝试运行程序时会出现main class not found
错误。为了解决这个问题,我找到的唯一解决方案是将图像移动到另一个目录,例如res/
,并将其设置为srcDirs
而不是src/
。< / p>
答案 5 :(得分:0)
请注意,src / main / resources下的路径必须与希望访问该资源的.class文件的包路径匹配。请参阅我的答案here。