我在 Maven 中有一个 Web 应用程序,具有默认的目录结构。那里没问题。 默认目录结构有一些指向我的本地主机数据库的属性文件。
目前我创建一个 Ant 脚本来创建不同的 war 文件 - 一个用于生产,一个用于开发,使用以下命令:
ant deploy-dev
ant deploy-prod
ant deploy-sit
ant deploy-uat
所以基本上他们创建一个 war 文件,然后通过插入属性文件来更新 war 文件
maven中有类似的东西吗(根据配置创建不同的war)?
如果是这样,我该怎么做?
我尝试了mvn war
但它只是引发了一场 war
最佳答案
仅供引用,最佳实践是不必为不同的环境重建工件 - 因为这不会导致可重新生成的构建,并且重建时其他事情可能会发生变化。 IE。如上所述,使用资源过滤仅在重新构建项目时有效。
当您将一个工件从开发阶段转移到测试阶段或从验收测试阶段转移到生产阶段时 - 您不想必须重建。
您想要做的实际上是让您的配置动态化,依赖于运行时变量。 IE。针对不同环境的不同 Spring 设置或属性文件,例如:
db-dev.properties
db-test.properties
db-prod.properties
然后你可以使用运行时变量和Spring的PropertyPlaceholderConfigurer在这些配置之间切换。 .
您实际上也可以使用不同的 spring 配置文件,就像我过去所做的那样,进行更复杂的设置。
我还建议您将“默认”设置保留为生产环境 - 这样,如果您部署到生产环境,则无需担心忘记设置环境变量。
关于maven-2 - 使用 Maven 进行多部署环境(生产/开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149352/