如何使用gradle将配置文件或任何其他资源添加到我的jar中?
我的项目结构:
src / main / java / com / perseus / .. --- Java包(源文件)src / main / java / config / * .xml --- Spring配置文件
预期的 jar 结构:
com / perseus / .. --- Java包(类文件)config / * .xml --- Spring配置文件
将配置文件从 src/main/java 移动到 src/main/resources .
src/main/java
src/main/resources
谢谢大家,我正在将现有项目迁移到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 } }
我发现这篇文章搜索如何为资源添加额外的目录 . 我找到了一个可能对某人有用的解决方案 . 这是我的最终配置:
sourceSets { main { resources { srcDirs "src/main/resources", "src/main/configs" } } }
默认情况下,添加到 src/main/resources 的任何文件都将包含在jar中 .
如果由于某种原因需要更改该行为,可以通过配置 sourceSets 来实现 .
sourceSets
This文档的一部分包含所有细节
我遇到了同样的问题 . 我在Java包中有一个PNG文件,它没有与源一起导出到最终的JAR中,这导致应用程序在启动时崩溃(找不到文件) .
上面的答案都没有解决我的问题,但我在Gradle论坛上找到了解决方案 . 我将以下内容添加到我的 build.gradle 文件中:
build.gradle
sourceSets.main.resources.srcDirs = [ "src/" ] sourceSets.main.resources.includes = [ "**/*.png" ]
它告诉Gradle在 src 文件夹中查找资源,并要求它仅包含PNG文件 .
src
EDIT: 请注意,如果您在尝试运行程序时遇到 main class not found 错误 . 为了解决这个问题,我发现的唯一解决方案是将图像移动到另一个目录,例如 res/ ,并将其设置为 srcDirs 而不是 src/ .
main class not found
res/
srcDirs
src/
请注意,src / main / resources下的路径必须与希望访问资源的.class文件的包路径匹配 . 看到我的回答here .
6 回答
将配置文件从
src/main/java
移动到src/main/resources
.谢谢大家,我正在将现有项目迁移到Gradle,并且不喜欢更改项目结构的想法 .
我已经弄清楚了,认为这些信息对初学者有用 .
以下是我的'build.gradle'中的示例任务:
我发现这篇文章搜索如何为资源添加额外的目录 . 我找到了一个可能对某人有用的解决方案 . 这是我的最终配置:
默认情况下,添加到
src/main/resources
的任何文件都将包含在jar中 .如果由于某种原因需要更改该行为,可以通过配置
sourceSets
来实现 .This文档的一部分包含所有细节
我遇到了同样的问题 . 我在Java包中有一个PNG文件,它没有与源一起导出到最终的JAR中,这导致应用程序在启动时崩溃(找不到文件) .
上面的答案都没有解决我的问题,但我在Gradle论坛上找到了解决方案 . 我将以下内容添加到我的
build.gradle
文件中:它告诉Gradle在
src
文件夹中查找资源,并要求它仅包含PNG文件 .EDIT: 请注意,如果您在尝试运行程序时遇到
main class not found
错误 . 为了解决这个问题,我发现的唯一解决方案是将图像移动到另一个目录,例如res/
,并将其设置为srcDirs
而不是src/
.请注意,src / main / resources下的路径必须与希望访问资源的.class文件的包路径匹配 . 看到我的回答here .