0

在我的Ant构建文件中,我使用了一个加密的属性,我正在读取一个文本文件。在构建过程中,我需要以某种引导目标的形式对此进行解密。我该怎么做呢?

例如,这里是文件的内容。

我的文件.txt

ENCRYPTED=encryptedtext

构建.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-->

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

谢谢你。

4

3 回答 3

5

在我看来,与您既定的目标相反,我认为设置您的要求的最简洁的方法使用dependsant 提供的结构。它就是为此目的而开发的。

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

于 2009-12-30T20:12:50.497 回答
4

如果您实现自己的任务来执行解密,您应该能够执行以下操作:

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

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

于 2009-12-30T21:10:37.323 回答
1

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

于 2010-01-07T00:30:07.960 回答