使用ANT反转属性值,然后替换文件

时间:2014-02-25 08:42:04

标签: java javascript ant

专家,

  1. 在我的程序中,有属性文件,JSP文件和* .java文件。

  2. 这些文件将使用“域名”进行某些操作。 (我使用“域名”是因为它看起来像一个域名,例如:abc.abcnet.com或abc.com) 行动示例是它将检索此“域名”并查找LDAP结构

  3. 按照步骤2示例,您可能知道在LDAP结构中,它通常会反转域名(例如:ou = com,ou = abcnet,cn = abc ...)

  4. 我的程序将部署到不同的服务器,每个服务器都有不同的LDAP节点名称

  5. 每次将程序部署到其他服务器时,我都需要使用正确的“域名”手动更新属性文件,JSP文件和java文件

  6. 我的客户希望我自动完成部署任务,他们只希望在文件中填写“域名”(例如:每次部署代码之前,他们只编辑属性文件,设置Key = abc.abcnet.com)

  7. 因此我想知道是否可以让我的客户只修改属性文件,我的ant任务可以读取密钥的值(例如:abc.abcnet.com)然后反转它。

  8. 并使用此反向字符串替换我的程序文件。

  9. 我搜索并看起来像Javascript提供反向功能,但它无法直接读取本地文件。

    我希望这次我解释清楚。

    任何想法都是值得欣赏的。

    最好的问候

1 个答案:

答案 0 :(得分:0)

试试这个,它将Groovy用于脚本部分 - 您可以根据Ant文档替换其他语言。我已更新解决方案,以包含使用反转值设置新属性

<project name="StackOverflow" basedir="." default="reverse">

        <target name="reverse">
           <loadproperties srcFile="domain.properties"/>
           <!--<echo>${key}</echo> -->
           <script language="groovy">
              def components = key.split('\\.').reverse().join('.')
              def project = self.project
              project.setProperty('domain', components)
           </script>
    <echo>Reversed domain=${domain}</echo>
</target>

</project>

此处输出

   Buildfile: c:\GroovyStuff\StackOverflowQuestion\reverse.xml

reverse:
    [echo] Reversed domain=com.abcnet.abc

BUILD SUCCESSFUL

和属性文件 - domain.properties

key=abc.abcnet.com