使用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); ... } }
而且 – 它似乎工作;-)