Генерация метаданных с помощью Ant - PullRequest
0 голосов
/ 28 апреля 2010

У меня есть структура папок, содержащая несколько файлов javascript, каждый из этих файлов нуждается в стандартном фрагменте текста вверху = // @ include "includes.js"

Каждая папка должна содержать файл с именем include.js, в котором есть запись включения для каждого файла в его каталоге и запись для файла включения в его родительском каталоге.

Я пытаюсь добиться этого с помощью муравья, и это не очень хорошо. Пока у меня есть следующее, которое выполняет вставку заголовка, но не перемещает и не копирует файл. Я слышал, как люди упоминали задачу <replace>, чтобы сделать это, но я немного озадачен.

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

<project name="JavaContentAssist" default="start" basedir=".">

    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
      <classpath>
        <pathelement location="C:/dr_workspaces/Maven Repository/.m2/repository/ant-contrib/ant-contrib/20020829/ant-contrib-20020829.jar"/>
      </classpath>
    </taskdef>

    <target name="start">

        <foreach target="strip" param="file">

            <fileset dir="${basedir}">
                <include name="**/*.js"/>
                <exclude name="**/includes.js"/>
            </fileset>

        </foreach>

    </target> 

    <target name="strip">

        <move file="${file}" tofile="${a_location}" overwrite="true">

            <filterchain>
                <striplinecomments>
                    <comment value="//@" />
                </striplinecomments>
                <concatfilter prepend="${basedir}/header.txt">
                </concatfilter>
            </filterchain>
        </move>


    </target>

</project> 

Что касается генерации включаемых файлов в директории, я не уверен, с чего начать вообще. Буду признателен, если кто-нибудь укажет мне правильное направление.

1 Ответ

1 голос
/ 29 апреля 2010

Это похоже на описание проблемы:

<project default="addincludes">
  <taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
      <pathelement location="ant-contrib/ant-contrib-1.0b3.jar"/>
    </classpath>
  </taskdef>

  <target name="addincludes">
    <foreach target="perdir" param="dir">
      <path>
        <dirset dir="src" includes="**"/>
      </path>
    </foreach>
  </target>

  <target name="perdir">
    <echo file="${dir}/includes.js">//@include "../includes.js"&#10;</echo>
    <foreach target="perfile" param="file">
      <path>
        <fileset dir="${dir}" includes="*.js" excludes="includes.js"/>
      </path>
    </foreach>
  </target>

  <target name="perfile">
    <basename property="basename" file="${file}"/>
    <echo file="${dir}/includes.js" append="true">//@include "${basename}"&#10;</echo>
    <move file="${file}" tofile="${file}.tmp" overwrite="true">
      <filterchain>
        <striplinecomments>
          <comment value="//@" />
        </striplinecomments>
        <concatfilter prepend="header.txt"/>
      </filterchain>
    </move>
    <move file="${file}.tmp" tofile="${file}" overwrite="true"/>
  </target>
</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...