2012-04-27 2 views
3

Все,Путь элемента включают в состоянии

Может кто-то пожалуйста, помогите о том, как включить каталог в элементе пути условно, если каталог существует: Так как ниже

<path id="lib.path.ref"> 
    <fileset dir="${lib.dir}" includes="*.jar"/> 
    <path location="${build.dir}" if="${build.dir.exist}" /> 
</path> 

Это в настоящее время не работает, потому что path не поддерживает атрибут if. В моем случае я хочу включить build.dir, если только он существует.

Благодаря

+0

только что нашел этот для вас: http://stackoverflow.com/questions/666718/need-to-set-path-cp-in-ant-script-depending-on-value-of-a-property may быть полезным. – htulsiani

ответ

3

Без установки Ant-Contrib или аналогичных Ant расширений, вы можете сделать то, что вы хотите с помощью следующей XML:

<project default="echo-lib-path"> 
    <property name="lib.dir" value="lib"/> 
    <property name="build.dir" value="build"/> 
    <available file="${build.dir}" type="dir" property="build.dir.exists"/> 

    <target name="-set-path-with-build-dir" if="build.dir.exists"> 
     <echo message="Executed -set-path-with-build-dir"/> 
     <path id="lib.path.ref"> 
      <fileset dir="${lib.dir}" includes="*.jar"/> 
      <path location="${build.dir}" /> 
     </path> 
    </target> 

    <target name="-set-path-without-build-dir" unless="build.dir.exists"> 
     <echo message="Executed -set-path-without-build-dir"/> 
     <path id="lib.path.ref"> 
      <fileset dir="${lib.dir}" includes="*.jar"/> 
     </path> 
    </target> 

    <target name="-init" depends="-set-path-with-build-dir, -set-path-without-build-dir"/> 

    <target name="echo-lib-path" depends="-init"> 
     <property name="lib.path.property" refid="lib.path.ref"/> 
     <echo message="${lib.path.property}"/> 
    </target> 
</project> 

Важной частью здесь является то, что происходит в -init цели. Это зависит от целей -set-path-with-build-dir и -set-path-without-build-dir, но Ant выполняет только одну цель, исходя из того, установлен ли build.dir.exists или нет.

Подробнее о Доступной задаче здесь: http://ant.apache.org/manual/Tasks/available.html.

+0

Большое вам спасибо за то, что вы нашли время, чтобы дать четкое и лаконичное рабочее решение. Цените это сообщество. – Afamee

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