有没有办法在ANT构建文件中指定引导程序目标?

时间:2009-12-30 19:54:38

标签: xml ant build bootstrapping

在我的Ant构建文件中,我使用的是加密属性,我正在读取文本文件。我需要在构建过程中的某种引导目标中解密它。我该怎么做?

例如,以下是文件的内容。

MYFILE.TXT

ENCRYPTED=encryptedtext

的build.xml

<project name="myProject" default="all">
<property file="myFile.txt">

<!--Specify bootstrap target here to perform the decryption task-->

<target name="myTarget">
<!--Use the decrypted property here-->

我得到一种方法是设置目标来执行解密,并将其作为depends添加到所有必需的目标中。我不想那样做。我对使过程尽可能干净的替代品感兴趣。这也意味着我已经考虑了解决方案“为什么你不在其他地方执行解密并从那里读取它?”并且我对它们不感兴趣。

谢谢。

3 个答案:

答案 0 :(得分:5)

在我看来,与您声明的目标相反,我认为设置您的需求的最简洁方法是以使用ant提供的depends结构。它是为了这个目的而开发的。

如果您希望确保每次运行ant进程时都运行此解密,并且您仍然希望抵制使用depends工具的冲动,则可以选择将解密过程放入ant.bat,在调用ant之前,或者将ant.bat包装在你自己的decryptAndCallAnt.bat中。

答案 1 :(得分:4)

如果您implement your own task执行解密,您应该可以执行以下操作:

<decrypt file="myFile.txt" refid="decrypted.refid"/>
<property refid="decrypted.refid"/>

您实现了一个名为decrypt的自己的任务,该任务读取myFile.txt并定义一个ref-id为decrypted.refid的资源。 property任务可以使用“ref-id”属性从任何类型的资源中读取属性。您必须深入研究Ant manual以了解如何定义自己的任务以及如何定义包含加密文件内容的资源的详细信息,但它应该是可行的。

答案 2 :(得分:1)

对于较新版本的Ant(我认为1.6),任务不需要包含在目标中。如果您总是希望执行某些任务,请不要将它们包装在目标中。

相关问题