如何使用gradle将配置文件或任何其他资源添加到jar中?
我的项目结构:
src / main / java / com / perseus / ..-Java包(源文件)
src / main / java / config / *。xml-春季配置文件
预期的jar结构:
com / perseus / ..-Java包(类文件)
config / *。xml-Spring配置文件
Answers:
将配置文件从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/java"]; exclude "**/*.java" }
。
.../resources/
包括替代资源目录与内容?
我遇到了同样的问题。我在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/
。
+=
运算符将我的目录添加到现有目录中:例如sourceSets.main.resources.srcDirs += [ "src/main/java" ]