Java 如何在ant命令中传递空值,以便它替换build.xml文件中的属性值
我正在将ant参数构造为字符串数组,并将其传递给ProcessBuilder类(JAVA)以运行它。 例如 下面是XML片段,其中的文本将被替换:Java 如何在ant命令中传递空值,以便它替换build.xml文件中的属性值,java,ant,Java,Ant,我正在将ant参数构造为字符串数组,并将其传递给ProcessBuilder类(JAVA)以运行它。 例如 下面是XML片段,其中的文本将被替换: <target name="antTarget" ....> ... <![CDATA[ <cred> <username>${username}</username>
<target name="antTarget" ....>
...
<![CDATA[
<cred>
<username>${username}</username>
<password>${password}</password>
</cred>
]]>
...
</target>
...
${username}
${password}
]]>
...
现在,如果我没有收到来自调用方的用户名和密码(因为它们是可选的),我最终会得到如下值:
<cred>
<username>-Dpassword</username>
<password>${password}</password>
</cred>
-Dpassword
${password}
同样的代码似乎在Linux中工作,但在Windows机器中不工作。将变量括在双引号内。例如:
String doubleQuotes = isWindows ? "\"" : "";
String[] args = { antHome + "/bin/" + command, "-f", xmlHome + "/path/to/xmlFile.xml",
"-lib", libHome,
"-Dusername=" + doubleQuotes + username + doubleQuotes,"-Dpassword=" + doubleQuotes + password + doubleQuotes,
"antTarget" };
将上述解决方案与讨论中的解决方案进行比较
String doubleQuotes = isWindows ? "\"" : "";
String[] args = { antHome + "/bin/" + command, "-f", xmlHome + "/path/to/xmlFile.xml",
"-lib", libHome,
"-Dusername=" + doubleQuotes + username + doubleQuotes,"-Dpassword=" + doubleQuotes + password + doubleQuotes,
"antTarget" };