我有一个问题,有Spring Profiles。我理解不使用maven配置文件的原因,因为每个环境都需要另一个工件。从那以后。我修改了我的代码以使用Spring Profile,但我对Spring Profiles的问题是它要求你在服务器上为每个环境提供一个database.property文件。我有这个设置,每个人都看过一百次相同的设置。
src
- main
- resources
-conf
myapp.properties
-env
dev.db.properties
test.db.properties
prod.db.properties
我认为使用此设置的问题是,每个服务器都将拥有env目录中的所有文件(即dev将在其服务器上具有prod.db.properties和test.db.properties文件)。有没有办法只在不使用配置文件的情况下复制maven构建期间所需的文件?我一直无法找到方法。如果是这种情况,那么这似乎是使用maven配置文件的一个原因。我可能错过了一些东西。任何想法都将不胜感激。
答案 0 :(得分:2)
这对我来说似乎是鸡和蛋的问题。如果您希望您的工件适用于所有这三种环境,则需要提供3种配置。不这样做会导致你最初提到的同样问题。根据配置文件以不同方式构建具有特定坐标的工件通常是不好的做法。
如果您不想在工件本身中发送配置,可以通过使用系统属性或通过在定义的位置(为方便起见,可以覆盖)定位属性文件来外化定义。
答案 1 :(得分:0)
您应该首先指出您的应用程序的真正含义:如果您正在运行“不同环境中的应用程序”,或者您在自己的专用环境中运行“不同的应用程序”。这是两个略有不同的概念:
最后,您还可以合并两种方法:
现在您应该也理解为什么不应该使用配置文件来构建具有不同风格的应用程序。