这是我的情景:
目标:
到目前为止我尝试过:
properties-maven-plugin
如果可能的话,我们希望将所有内容封装在构建工作区中,如下所示:
project
pom.xml
src
...
conf
dev.properties
test.properties
prod.properties
build-scripts
build.groovy <-- the script that wraps maven to do the build
install.groovy <-- ... wraps maven to do the install
运行构建看起来像:
cd build-scripts
./build.groovy
./install.groovy -e prod
我们使用的maven版本是否有任何可能的方法来实现这些目标?如果没有,是否可以使用更新版本的maven?
答案 0 :(得分:2)
仅使用Maven是不可能的。 (另请参阅How to activate profile by means of maven property?)原因是profiles are the first thing evaluated before anything else to determine the effective POM。
我的建议是编写一些预处理器来解析环境特定的属性文件,并在启动Maven之前将它们转换为所需的系统属性。此脚本可以包含在~/.mavenrc
中,以便在Maven启动之前自动运行。下面是一个示例脚本,它假定属性文件位于固定位置:
properties=`cat /etc/build-env.properties`
while read line; do
MAVEN_OPTS="$MAVEN_OPTS -D$line"
done <<< "$properties"
如果没有修复属性文件,您只需要在脚本中添加一些东西来发现位置(假设它是可发现的)。