我是 Ant 的新手,任何帮助将不胜感激。
我想做的是:
当我调用 Ant 目标时,我正在执行以下操作:
ant -DSIMV3.1=true run-tenantManagement
现在在 build.xml 中,我有:
<target name="run-tenantManagement" depends="jar">
<property name="SIMV3.1" value="${SIMV3.1}" />
...
</target>
现在我希望属性 SIMV3.1 的值在我的 java 代码中可见。
因为在我的java代码中,我想设置一个条件:
if(SIMV3.1==true){
//do something
}else{
//do something else
}
请帮忙。
就目标构建(即生成的 jar 文件)中的属性值而言,另一种更持久的方法是让 ant 将属性值写入包含在目标 jar 文件中的资源文件。这使得在构建期间设置的属性值具有更好的生命周期(因为缺乏更好的词),以便它可以在项目的(即构建的)产品中可用。例如,示例 ant 文件可能如下所示:
<project name="sandbox" basedir="." default="build">
<condition property="SIMV3.1" value="${SIMV3.1}" else="false">
<isset property="SIMV3.1"/>
</condition>
<target name="clean">
<delete verbose="${verbose}" dir="bin" failonerror="false"/>
<delete verbose="${verbose}" file="lib/sandbox.jar" failonerror="false"/>
</target>
<target name="compile">
<mkdir dir="bin"/>
<javac srcdir="src" destdir="bin"/>
</target>
<target name="resources">
<echo file="bin/sandbox/resources/SIMV3.1">${SIMV3.1}</echo>
</target>
<target name="build" depends="compile, resources">
<mkdir dir="lib"/>
<jar destfile="lib/sandbox.jar" basedir="bin">
<manifest>
<attribute name="Main-Class" value="sandbox.Sandbox"/>
</manifest>
</jar>
</target>
</project>
The 状况如果未提供,则任务默认属性值为 false,并且资源任务将属性值写入将包含在 jar 文件中的资源文件(在build任务)。因此这样构建:
ant -DSIMV3.1=true
将导致“真”值被写入SIMV3.1文件在资源包裹。调用 ant 而不指定属性将导致默认属性false被写入该资源文件。
在代码中可以通过以下方式访问该资源输入流通过从文件中读取第一行(也是唯一的一行)并使用Boolean像这样的类:
package sandbox;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sandbox {
public static void main(String[] args) {
String resource = "/sandbox/resources/SIMV3.1";
InputStream stream = Sandbox.class.getResourceAsStream(resource);
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buffer = new BufferedReader(reader);
boolean simv3_1 = false;
try {
simv3_1 = Boolean.parseBoolean(buffer.readLine());
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println("SIMV3.1 = " + simv3_1);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)