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运行