如何包含用于调试但不用于部署的资源?



Gradle是否可以使用不用于部署的资源进行调试?

我的*.properties文件是在服务器上从*.config文件生成的,并且在用Gradle创建jar时不应该包含在jar中。

然而,当用IDEA在本地调试时,我需要类路径上的*.properties文件。

如果我从服务器复制属性文件并将其放在src/main/resources中,应用程序将运行,我可以从IDEA正确地调试它。但是,如果我文件提交到该目录,它将通过Gradle在构建服务器上添加到jar中,然后部署它,这不是我想要的。

为了避免文件被意外部署,我将属性文件提交给src/env-properties(并定期手动将其与服务器文件同步)。然后,我可以进入IDEA项目结构,添加一个内容根目录,并将该目录标记为允许我调试的资源。

当我从IDEA中刷新Gradle项目时,这个配置就丢失了。

我如何配置Gradle,使IDEA使用src/env-properties作为资源,但Gradle不将其用于jar任务并意外部署它?

注:团队中有几个人使用eclipse,所以我希望gradlew eclipse也尽可能将其添加到eclipse类路径中。

你在正确的轨道上单独的资源文件夹,你可以配置gradle做你想做的:

为只在调试时包含的资源创建一个单独的目录,例如src/debug/resources。

将以下内容添加到构建中。gradle文件:

sourceSets {
main {
debug {
resources {
srcDir 'src/debug/resources'
}
}
}
}
jar {
exclude '**/debug/**'
}

resources重命名为您需要的任何名称,properties或env-properties

这应该就可以了,我不能回答你问题的Eclipse部分,我很幸运有一个免费的Eclipse工作环境!

这篇文章为复杂的构建提供了有用的花哨的东西:如何在Gradle中从JAR中排除资源,并通过IntelliJ运行

最新更新