我有两个属性文件 [one.properties
和two.properties
]。我想从命令行将属性文件动态加载到我的 Ant 项目中。
我的构建文件名为 build.xml。
命令行:
> ant build [How do I pass the property file names here?]
我有两个属性文件 [one.properties
和two.properties
]。我想从命令行将属性文件动态加载到我的 Ant 项目中。
我的构建文件名为 build.xml。
命令行:
> ant build [How do I pass the property file names here?]
ant -propertyfile one.properties -propertyfile two.properties
-D
可以使用以下标志在命令行上定义各个属性:
ant -Dmy.property=42
<loadproperties srcfile="one.properties" />
<loadproperties srcfile="two.properties" />
<property file="one.properties" />
<property file="two.properties" />
JB Nizet 的解决方案结合了concat和fileset:
<target name="init" description="Initialize the project.">
<mkdir dir="temp" />
<concat destfile="temp/combined.properties" fixlastline="true">
<fileset dir="." includes="*.properties" />
</concat>
<property file="temp/combined.properties" />
</target>
制作一个构建条件,如果为构建提供了必需的系统参数,那么只允许下一个目标,否则构建会失败。
Pass CMD: ant -DclientName=Name1 -Dtarget.profile.evn=dev
Fail CMD: ant
<project name="MyProject" default="myTarget" basedir=".">
<target name="checkParams">
<condition property="isReqParamsProvided">
<and>
<isset property="clientName" /> <!-- if provide read latest else read form property tag -->
<length string="${clientName}" when="greater" length="0" />
<isset property="target.profile.evn" /> <!-- mvn clean install -Pdev -->
<length string="${target.profile.evn}" when="greater" length="0" />
</and>
</condition>
<echo>Runtime Sytem Properties:</echo>
<echo>client = ${clientName}</echo>
<echo>target.profile.evn = ${target.profile.evn}</echo>
<echo>isReqParamsProvided = ${isReqParamsProvided}</echo>
<echo>Java/JVM version: ${ant.java.version}</echo>
</target>
<target name="failOn_InSufficentParams" depends="checkParams" unless="isReqParamsProvided">
<fail>Invalid params for provided for Build.</fail>
</target>
<target name="myTarget" depends="failOn_InSufficentParams">
<echo>Build Success.</echo>
</target>
</project>
@另见:替换所有令牌表单文件