2013-12-08 2 views
0

Привет я с CSV-файл с 2-мя линиями:Ant скрипт + разбора CSV файл

МФ1, EG1, EG2, Br1, Br2

mf2, ЭГ2, EG3, br2, Br3

Я хочу сохранить каждое разделенное запятыми значение в отдельных переменных, используя ant.

Я могу разобрать строки, но не отдельные значения, поскольку список не поддерживает вложенность.

Ниже мой сценарий:

<?xml version="1.0" encoding="UTF-8"?> 

<project name="ForTest" default="getLine" basedir="." 
    xmlns:ac="antlib:net.sf.antcontrib"> 
    <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" 
     classpath="C:\Manju\apache-ant-1.8.4\ant-contrib-1.0b3-bin\ant-contrib\ant-contrib-1.0b3.jar" /> 
    <loadfile property="message" srcFile="build_params.csv" /> 
    <target name="getLine"> 
     <ac:for list="${message}" delimiter="${line.separator}" param="val"> 
      <sequential> 
       <echo>@{val}</echo> 
       <property name="var1" [email protected]{val}/> 
      </sequential> 
     </ac:for> 
    </target> 
    <target name="parseLine" depends="getLine"> 
     <for [email protected]{val} delimiter="," param="letter"> 
      <sequential> 
       <echo>@{letter}</echo> 
      </sequential> 
     </for> 
    </target> 



</project> 

Target parseline дает ошибку говоря для списка ожидает открытые котировки. Помощь приветствуется.

ответ

1

Вы считали, что вместо этого встраиваете язык сценариев, например, groovy? Гораздо проще по сравнению с боевыми муравьями.

<project name="demo" default="run"> 

    <target name="run"> 
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/> 
    <groovy> 
     new File("build_params.csv").splitEachLine(",") { fields -> 
     println "====================" 
     println "field1: ${fields[0]}" 
     println "field2: ${fields[1]}" 
     println "field3: ${fields[2]}" 
     println "field4: ${fields[3]}" 
     println "field5: ${fields[4]}" 
     println "====================" 
     } 
    </groovy> 
    </target> 

</project> 

Вы можете добавить специальную цель начальной загрузки для автоматической установки заводной банки:

<target name="bootstrap"> 
    <mkdir dir="${user.home}/.ant/lib"/> 
    <get dest="${user.home}/.ant/lib/groovy-all.jar" src="http://search.maven.org/remotecontent?filepath=org/code 
haus/groovy/groovy-all/2.2.1/groovy-all-2.2.1.jar"/> 
    </target> 
+0

Благодаря Марк, я заводной и в состоянии решить. – user3080775

0

С одной стороны, ваша parseLine цель должна начинаться так:

<for list="@{val}" delimiter="," param="letter"> 

Обратите внимание на кавычки @{val}.

Смежные вопросы