【发布时间】:2011-12-28 18:19:55
【问题描述】:
我有一个 maven 项目,它在生产和开发环境的属性文件中有完全不同的设置。对吗,最常见的方法是拥有不同的 Maven 配置文件(默认为 dev),它们将在构建过程中打包不同的属性? 有没有其他方法?
【问题讨论】:
标签: java maven development-environment production-environment
我有一个 maven 项目,它在生产和开发环境的属性文件中有完全不同的设置。对吗,最常见的方法是拥有不同的 Maven 配置文件(默认为 dev),它们将在构建过程中打包不同的属性? 有没有其他方法?
【问题讨论】:
标签: java maven development-environment production-environment
是的,这正是配置文件的设计目的。
您甚至不需要不同的属性文件,您可以从每个profile 中获得one property file that gets filtered with different properties。
【讨论】:
配置文件的问题是您需要运行构建的次数与配置文件的次数相同。这意味着如果有五个配置文件(dev、pre-test、pre-live、qa、prod),您需要运行构建五次。我建议采用不同的方式并通过构建直接生成已正确配置的五个工件(通常是战争等)。这可以通过使用我制作的example 来实现,这让生活更轻松。该示例将产生
【讨论】:
还有另一种方法可以将环境依赖项放入环境中,以便从 maven 项目构建单个工件,然后在部署期间提供属性。在这种情况下,maven 对特定环境一无所知。
例如你可以把-Dmy.config.file=/path/to/env/my.properties的东西放在java命令行或者使用JNDI,或者从数据库中读取属性等等。
如果您有很多不同的环境或者您对它们一无所知(例如,将.war 应用程序分发给最终用户),这是更可行的方法。
【讨论】: