Czy używasz <ivy:cleancache>
? Dlatego Twoje odbudowy są tak krótkie, ale początkowe kompilacje są tak długie.
Bluszcz będzie wolniejszy niż użycie mrówki bez bluszczu. Ivy musi pobrać każdy słoik, który podasz, plus wszystkie zależności w pamięci podręcznej bluszczu (domyślnie jest to $HOME/.ivy2/cache
na systemie Unix/Mac/Linux i %USERPROFILE%\.ivy2\cache
w systemie Windows), zanim będzie można rozpocząć. Możesz określić 4 lub 5 słoików, ale te mogą zależeć od innych, które mogą zależeć od jeszcze większej liczby.
Naprawdę nie ma sposobu, aby przyspieszyć pobieranie słoików z Ivy , ale gdy słoiki zostaną pobrane, tak naprawdę nie ma powodu, aby stale czyścić pamięć podręczną bluszczu za każdym razem, gdy robisz nowy projekt lub kiedy robisz czysty.
Co można zrobić, to konfiguracja Twój czysty, dzięki czemu można uniknąć czyszczenia pamięci podręcznej Ivy chyba że podasz mu:
<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>
ten sposób działa ant clean
nie będzie szorować cache Ivy za każdym razem, i można go wielokrotnie używać ponownie. Jeśli chcesz wyczyścić pamięć podręczną Ivy trzeba to zrobić:
ant -Divy.cleancache=true clean
Tak, to jest przy użyciu antcontrib
. Używam mojej specjalnej konfiguracji katalogu Ivy do skonfigurowania Ivy dla wszystkich i podczas gdy jestem na tym, aby dołączyć definicje dla ant-contrib, plus Findbugs, PMD i innych przydatnych narzędzi.
Jednakże, może to być możliwe w Ant 1.9 nie musiał tego robić:
<property name="ivy.cleancache" value="false"/>
<target name="clean">
<ivy:cleancache if:true="ivy.cleancache/>
<delete dir="${target.dir}"/>
</target>
nie próbowałem tego, ale jeśli to działa, nie trzeba używać antcontrib. Oczywiście, można to zrobić za:
<target name="ivy.cleancache"
if="ivy.cleancache">
<ivy:cleancache/>
</target>
<target name="clean"
depends="ivy.cleancache">
<delete dir="${target.dir}"
</target>
Następnie można określić:
$ ant -Divy.cleancache clean
wyczyścić pamięć podręczną bluszcz i po prostu umieścić ant clean
do czyszczenia build bez czyszczenia pamięci podręcznej bluszcz.
1. Możesz być w stanie przyspieszyć pobieranie słoików jeśli użyć własnego repozytorium Maven jak Nexus lub Artifactory. Będą mieć własną pamięć podręczną, która będzie przechowywać lokalnie pobrane słoiki innych firm. Jest to nieco szybsze niż wyjście poza twoją sieć, aby znaleźć te słoiki innych firm, ale wszystkie nadal muszą zostać pobrane. Może zamiast zabrać 26 sekund, może to zająć tylko 20 sekund.
Zwiększenie cache TTL bardzo pomaga - odbudować czasy w dół do 2s. Sądzę, że dodatkowa sekunda to tylko nieskuteczność bluszczu. Pełne kompilacje (z zapełnioną pamięcią podręczną) mają z jakiegoś powodu 20 lat. Utwórz odpowiedź, którą mogę zaznaczyć. –