Si sta utilizzando <ivy:cleancache>
? Questo è il motivo per cui le tue ricostruzioni sono così brevi, ma le tue build iniziali sono così lunghe.
L'edera sarà più lenta rispetto all'utilizzo di Ant senza Ivy. Ivy deve scaricare ogni jar specificato, oltre a tutte le dipendenze nella cache di Ivy (che per impostazione predefinita è $HOME/.ivy2/cache
su Unix/Mac/Linux e %USERPROFILE%\.ivy2\cache
su Windows) prima che possa iniziare. Potresti specificare 4 o 5 vasi, ma questi potrebbero dipendere da altri che potrebbero dipendere ancora di più.
Ci
in realtà non è un modo per accelerare il download Ivy di vasi , ma una volta vasetti vengono scaricati, non c'è davvero una ragione per pulire costantemente la cache Ivy ogni volta che fai un nuovo progetto, o quando fai una pulizia.
Che cosa si può fare è impostare il pulito, in modo da poter evitare di pulire la cache Ivy se non si specifica che:
<taskdef uri="http://ant.apache.org/ivy"
resource="org/apache/ivy/ant/antlib.xml">
<classpath>
<fileset dir="${ivy.dir}">
<include name="ivy*.jar"/>
</fileset>
</classpath>
</taskdef>
<property name="ivy.cleancache" value="false"/>
<target name="clean">
<if>
<istrue value="${ivy.cleancache}"/>
<then>
<ivy:cleancache/>
</then>
<if>
<delete dir="${target.dir}"/>
</target>
In questo modo, l'esecuzione ant clean
non fregare la cache Ivy ogni volta, e puoi riutilizzarlo più e più volte. Se si desidera pulire la cache Ivy è necessario fare questo:
ant -Divy.cleancache=true clean
Sì, questo sta usando antcontrib
. Uso la mia speciale configurazione della directory Ivy per configurare Ivy per tutti e mentre ci sono, per includere le definizioni per ant-contrib, oltre a Findbugs, PMD e altri utili strumenti.
Tuttavia, potrebbe essere possibile in Ant 1.9 non hanno a che fare questo:
<property name="ivy.cleancache" value="false"/>
<target name="clean">
<ivy:cleancache if:true="ivy.cleancache/>
<delete dir="${target.dir}"/>
</target>
Non ho provato questo, ma se funziona, non c'è bisogno di usare antcontrib. Naturalmente, si potrebbe fare anche questo:
<target name="ivy.cleancache"
if="ivy.cleancache">
<ivy:cleancache/>
</target>
<target name="clean"
depends="ivy.cleancache">
<delete dir="${target.dir}"
</target>
Poi è possibile specificare:
$ ant -Divy.cleancache clean
per pulire la cache Ivy e semplicemente mettere ant clean
per pulire il vostro costruire senza pulire la cache Ivy.
1. Potreste essere in grado di accelerare il download dei vasetti, se si utilizza il proprio repository Maven come Nexus o Artifactory. Questi avranno la propria cache che memorizzerà i jar di terze parti scaricati localmente. Questo è un po 'più veloce di uscire dalla rete per trovare questi vasi di terze parti, ma tutti devono ancora essere scaricati. Forse invece di prendere 26 secondi, potrebbe richiedere solo 20 secondi.
Aumentare la cache TTL aiuta molto - ricostruiscono gli orari sono fino a 2s. Immagino che il secondo in più sia solo un'inefficienza dell'edera. Le build complete (con cache popolata) sono 20 per qualche motivo però. Si prega di creare una risposta che posso contrassegnare. –