首页 文章

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

提问于
浏览
63

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

我的项目结构:

src / main / java / com / perseus / .. --- Java包(源文件)src / main / java / config / * .xml --- Spring配置文件

预期的 jar 结构:

com / perseus / .. --- Java包(类文件)config / * .xml --- Spring配置文件

6 回答

  • 13

    将配置文件从 src/main/java 移动到 src/main/resources .

  • 22

    谢谢大家,我正在将现有项目迁移到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
       }
    }
    
  • 41

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

    sourceSets {
        main {
            resources {
                srcDirs "src/main/resources", "src/main/configs"
            }
        }
    }
    
  • 52

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

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

    This文档的一部分包含所有细节

  • 0

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

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

    sourceSets.main.resources.srcDirs = [ "src/" ]
    sourceSets.main.resources.includes = [ "**/*.png" ]
    

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

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

  • 55

    请注意,src / main / resources下的路径必须与希望访问资源的.class文件的包路径匹配 . 看到我的回答here .

相关问题