使用ant定制属性处理

我们有一个属性文件(例如db.properties ),其中包含数据库访问的凭据。 例:

 db.jdbc.user=johndoe db.jdbc.password=topsecret 

我们有许多ant脚本可以读取此文件并执行各种任务。 例:

     ...   ...  SELECT 'JDBC connect: successful!' FROM dual;  ...  

现在,客户端希望使用.jar文件中提供的加密库来加密db.properties中的密码,例如:

 db.jdbc.user=johndoe db.jdbc.password.encrypted=true db.jdbc.password=018Dal0AdnE=|ySHZl0FsnYOvM+114Q1hNA== 

我们想要的是以最少量的ant文件修改来实现解密。 我听说过Ant 1.8增强的属性处理,但是我们使用Ant 1.7.1

什么是最好的解决方案 – 自定义任务, PropertyHelper实例的一些魔力,还有什么?

提前感谢您的提示。

我认为你想采取的方法是你可以在ant中做的包装方法。

父ant脚本:

                

使用subant
和执行 ( 可能是危险的

您要做的是将每个下标放入此父构建文件中,并将未加密的String传递给每个脚本作为参数/从属性读入。

我更喜欢的解决方案是使用我自己的自定义任务来处理问题。 这需要最小的变化。 在我们的ant脚本中,此任务如下所示:

     ...   

这项任务也是微不足道的。 它看起来像这样:

 public class DecryptPassword extends Task { @Override public void execute() { ... PropertyHelper.getPropertyHelper(getProject()).setProperty(null, passwordProperty, getDecryptedPassword(), false); ... } } 

而且 – 它似乎工作;-)