ANT:字符串分割到多个参数 [英] ANT: split string into multiple parameters

查看:1502
本文介绍了ANT:字符串分割到多个参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚完成一个 ANT 脚本(做这项工作完美) 。
但有一个新的要求,剧本必须改变。
我们的目标是有一个名为 ANT部署文件部署,全部.txt 。该文件将看起来像

I have just finished an ANT script (does the job perfectly). But there is a new requirement and script has to change. The goal is to have ANT deployment file called deploy-all.txt. The file will look like

client1=name1=server1+server2=repositoryX
client2=name2=server1+server3=repositoryY
client3=name3=server2+server4=repositoryZ

有将只有1客户端,只有一个名字,从1到几个服务器,只有一个存储库,和一种类型。

There will be only 1 client, only one name, from 1 to few servers, only one repository, and one type.

目标是什么:每行我需要得到变量,以便我可以分析他们执行任务。
输出应该是

What the goal is: for each line i need to get variables so i can parse them and perform tasks. The output should be

client=client1
name=name1
server=server1
server=server2 (could be more)
repository=repository1

这些参数必须被解析为每一行。
我有被称为GENERIC.WAR通用APP - 做到这一点,并且效果很好。现在,应用程序了需要单独的插件,必须构建/部署。

Those parameters have to be parsed for each line. I do have generic APP that is called GENERIC.WAR - that is done and works well. Now applicaiton require separate plugins that needs to be build/deploy.

什么该脚本会做什么:

a) copy generic GENERIC.WAR file to server1 and server2 with name scecified as client1 (SCP using scp task)
b) get svn repository based on repositoryX (svn update ant task)
c) get name and loop through existing code (using xmltask from checked out repository) to find right code to compile and zip it (have done it already)

所以,我有所有的任务,我可以工作,只是无法解析每个元素为每一行单独的参数。我试图的列表连续,但没有成功为止。我可以单独所有,但由于只有1参数。我不能让它为多个参数,我可以遍历每一行,并解析到其他任务。

So I have all tasks i can perform but can not parse each element as a separate parameter for each line. I tried for list and sequential but no success so far. I could separate all but as only 1 parameter. I can not get it as multiple parameters that i can loop through each line and parse to additional tasks.

由于这仅仅是一个开始 - 我可以改变设计 - 有,例如,而不是一个TXT XML。
它是可行的,如果是请你帮我想法如何。

Because it is just a start - i can change design - to have a XML for example instead of TXT. Is it doable and if yes could you please help me with idea how to.

感谢您:)

ES苏

推荐答案

如果您通过定义一个命名空间的时尚你的属性键启动,我想你会发现很容易达到你所需要的,例如

If you start by defining your property keys in a "namespaced" fashion, I think you will find it easier to achieve what you need, e.g.

client.list=client1,client2
client1.name=client1
client1.server.list=server1,server2
client1.repository=repositoryX
client2.name=name2
client2.server.list=server1,server3
client2.repository=repositoryY

现在,你有一组独特的功能按键您可以交叉引用在循环和/或macrodefs属性。

Now you have a set of properties with unique keys which you can cross-reference in loops and/or macrodefs.

下面是你如何可以使用一个例子:

Here's an example of how you could use that:

<property file="deploy-all.txt"/>

<target name="test">
    <for list="${client.list}" param="client">
        <sequential>
            <deploy client="@{client}"/>
        </sequential>
    </for>
</target>

<macrodef name="deploy">
    <attribute name="client"/>
    <sequential>
        <echo>client: @{client}</echo>
        <for list="${@{client}.server.list}" param="server">
            <sequential>
                <echo>server: @{server}</echo>
            </sequential>
        </for>
        <echo>repository: ${@{client}.repository}</echo>
    </sequential>
</macrodef>

输出:

test:
     [echo] client: client1
     [echo] server: server1
     [echo] server: server2
     [echo] repository: repositoryX
     [echo] client: client2
     [echo] server: server1
     [echo] server: server3
     [echo] repository: repositoryY

这篇关于ANT:字符串分割到多个参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆