Domanda

Ho uno script di build e come parte di quello script copia un file jar in una directory, per comodità chiamiamolo utils jar.il jar delle utilità è creato da un altro script di build che si trova in un'altra directory.Quello che sto cercando di fare è che il mio script di build esegua lo script di build utils in modo da poter garantire che il jar utils sia aggiornato.

Quindi so che devo importare il file di build utils.

<import file="../utils/build/build.xml" />

Il che non funziona perché l'attività di importazione, a differenza di quasi tutte le altre attività di ant, non viene eseguita da basedir, ma da pwd.Quindi, per aggirare il problema, ho questa piccola canzoncina, che importa con successo il file di build

  <property name="baseDirUpOne" location=".." />
  <import file="${baseDirUpOne}/utils/build/build.xml" />

Quindi ora che ho risolto il mio problema di importazione devo chiamare l'attività, beh dovrebbe essere facile, vero:

<antcall target="utils.package" />

si noti che in quanto sopra, utils è il nome del progetto di ../utils/build/build.xml

il problema che sto riscontrando ora è che ant call non viene eseguito in ../utils/build quindi quello di cui ho bisogno, e che non riesco a trovare, è una proprietà runat o qualcosa di simile, essenzialmente:

<antcall target="utils.package" runat="../utils/build" />

Il motivo per cui ne ho bisogno è che nel mio file di build delle utilità il passaggio per selezionare quale codice copiare nel jar si basa su percorsi relativi in ​​modo da evitare percorsi di hardcoding nel mio file ant.Qualche idea?

È stato utile?

Soluzione

Ho impostato qualcosa di simile:Ho un build.xml Ant principale che richiama un build.xml separato che si occupa di creare i miei test.Ecco come lo faccio:

<target name="build-tests">
    <subant target="build">
      <fileset dir="${test.home}" includes="build.xml"/>
    </subant>
</target>

Il trucco è usare subant invece di antcall.Non è necessario importare l'altro file di build.

Altri suggerimenti

Prova a usare il compito della "formica". invece dell'attività "antcall", che esegue direttamente la build importata invece di importarla nel file di build corrente.Ha un parametro "dir":

la directory da utilizzare come basato per il nuovo progetto di formica.Il valore predefinito è basato sull'attuale progetto, a meno che ENHERITALL non sia stato impostato su False, nel qual caso non ha un valore predefinito.Ciò sovrascriverà l'impostazione basata del progetto chiamato.

Quindi potresti fare:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />

o qualcosa di simile.

Puoi passare i parametri ad antcall utilizzando annidato nel blocco antcall.Quindi, puoi trasmettere le proprietà in questo modo (probabilmente anche basedir poiché le proprietà sono immutabili).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top