2014-12-08 4 views
0

Я пытаюсь создать сценарий сборки, который вызовет внешнее приложение, которое будет использоваться для создания нескольких проектов. При запуске внешнего приложения может потребоваться передача некоторых внешних библиотек. Проблема в том, что для каждого проекта я не буду знать, какие библиотеки (если они есть) необходимы.Генерировать разделенные запятой ist

Так что для того, чтобы достичь этого, я думал, что лучший подход будет выглядеть следующим образом:

1) Для каждого проекта создать lib.property файл, который содержит список внешней LIBS. т.е. LIB1 = ххх Lib2 = ссс LIB3 = ууу

2) Иметь свой сценарий сборки «читать» файл свойств для определения внешних библиотек и в то строить его в ехес командной строки для внешнего приложения вместе с ссылки на внешние библиотеки. i.e myApp -lib1, lib2, lib3

Является ли это разумным и выполнимым? Я пытаюсь написать его здесь, но если в ANT есть лучший способ, я буду благодарен за любой совет?

это то, что я написал до сих пор

<target name="info"> 
<echo>Reading lib file</echo> 
<property file="lib.properties" prefix="x"/> 
<propertyselector property="propertyList" delimiter="," match="LIB[0-9]" select="\0" /> 
<echo> List LIBS in loop</echo> 
<for list="${propertyList}" param="sequence"> 
<sequential> 
<echo>${[email protected]{sequence}}</echo> 
</sequential> 
</for> 
</target> 
+0

Check [Antcontrib] (http://ant-contrib.sourceforge.net/tasks/tasks/index.html). На мой взгляд, задача [для] (http://ant-contrib.sourceforge.net/tasks/tasks/for.html) будет полезна для вас ... –

+0

Хм это то, что я думал .. но я не вижу как перейти из списка в одно свойство .... Обновлен OP с моим примером кода – dazednconfused

ответ

1

Использование уаг задачу

<project name="MyProject" default="info" basedir="."> 
    <target name="info"> 
     <taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
      <classpath> 
       <pathelement location="${basedir}/ant-contrib-0.6.jar"/> 
      </classpath> 
     </taskdef> 

     <echo>Reading lib file</echo> 
     <property file="lib.properties" prefix="x"/> 
     <propertyselector property="propertyList" delimiter="," match="LIB[0-9]" select="\0" /> 
     <echo> List LIBS in loop</echo> 

     <var name="x" value=""/> 
     <for list="${propertyList}" param="sequence"> 
      <sequential> 
       <echo>${[email protected]{sequence}}</echo> 
       <var name="x" value="${[email protected]{sequence}},${x}"/> 
      </sequential> 
     </for> 
     <var name="x" value="-${x}"/> 

     <echo>Final: ${x}</echo> 
    </target> 
</project> 

Но это не работает идеально:

info: 
[echo] Reading lib file 
[echo] List LIBS in loop 
[echo] yyy 
[echo] ccc 
[echo] xxx 
[echo] Final: -xxx,ccc,yyy, 
+0

Привет, Chris, Thats great ... Я играл с var, но возвращал его обратно ... wahts точка оператор: ?? – dazednconfused

+0

Просто добавьте знак «-» при попрошайничестве статута (ваше требование состояло в том, чтобы иметь «myApp -lib1, lib2, lib3» –

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