Pergunta

Eu tenho um projeto com vários módulos, cada um em seu próprio diretório. Cada módulo tem seu próprio arquivo formiga construção (build.xml)

No diretório raiz Eu configurei um arquivo de construção geral que chama o arquivo de construção de cada módulo na ordem correta.

<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
  <target name="all">
    <ant dir="corelib"/>
    <ant dir="tools"/>
    <ant dir="makeGdb"/>
    <ant dir="cytoscape-plugin"/>
  </target>
</project>

Agora, cada módulo também tem um alvo "limpa", então eu adicionar estas linhas:

 <target name="clean">
    <ant dir="corelib" target="clean"/>
    <ant dir="tools" target="clean"/>
    <ant dir="makeGdb" target="clean"/>
    <ant dir="cytoscape-plugin" target="clean"/>
  </target>

E há mais alvos desse tipo. Existe uma maneira de reescrever o arquivo de construção para evitar essa duplicação? Eu olhei para uma propriedade interna que contém o destino ativo, mas eu não poderia encontrá-lo.

Foi útil?

Solução

Por que não usar antcall para chamar um alvo que referências todos os seus subdiretórios, e parametrizar o alvo a ser chamado. por exemplo.

 <antcall target="doStuffToSubdirs">
    <!-- let's clean -->
    <param name="param1" value="clean"/>
  </antcall>

e, em seguida:

<target name="doStuffToSubdirs">
   <ant dir="corelib" target="${param1}"/>
   <ant dir="tools" target="${param1}"/>
    ...etc
</target>

de modo que este permite parametrizar as chamadas para os seus subdiretórios. Se você adicionar um novo subdir, você só tem a acrescentar que subdir ao alvo 'doStuffToSubdirs' (eu mudar o nome que bem!)

Outras dicas

Coloque um alvo limpo em sua commonbuild.xml e nos arquivos de criança apenas importar seus pais build.xml

<import file="${parent.dir}/commonbuild.xml" />

Agora você vai ser capaz de chamar o alvo limpa em seu filho constrói. Você também pode substituir esse destino criando um alvo limpo em qualquer um dos seu filho constrói.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top