Mam 3 projekty o następującej strukturze:Apache Ivy. Przechodnia nie Zależności pobierane
App
| |
...
| |
| +--lib
| | |
| | +--...
| |
| +--dist
|
Lib
| |
...
| |
| +--lib
| | |
| | +--sublib-1.0.jar
| |
| +--dist
| |
| +--lib-1.0.jar
|
SubLib
|
...
|
+--dist
|
+--sublib-1.0.jar
Które mają następującą zależność:
App <-- Lib <-- SubLib
używam apache bluszcz odzyskać zależności zarówno App
i Lib
. Zależności te są opisane w następujący sposób: ivy.xml
z Lib
:
<ivy-module version = "2.0">
<info organisation = "com.test.lib" module = "lib"/>
<dependencies>
<dependency org = "com.test.sub.lib" name = "sublib" rev = "1.0" conf = "compile->default"/>
</dependencies>
</ivy-module>
ivy.xml
z App
:
<ivy-module version = "2.0">
<info organisation = "com.test.app" module = "App"/>
<dependencies>
<dependency org = "com.test.lib" name = "lib" rev = "1.0" conf = "compile->default"/>
</dependencies>
</ivy-module>
ivysettings.xml
:
<ivysettings>
<settings defaultResolver = "local"/>
<resolvers>
<filesystem name = "local">
<artifact pattern = "${ivy.settings.dir}/SubLib/dist/[artifact]-[revision].[ext]"/>
<artifact pattern = "${ivy.settings.dir}/Lib/dist/[artifact]-[revision].[ext]"/>
</filesystem>
</resolvers>
<modules>
<module organisation = "com.test.ivytest" resolver = "local"/>
</modules>
</ivysettings>
Oczekiwany wynik: po wykonaniu ivy:retrieve
b oth sublib-1.0.jar
i lib-1.0.jar
być obecny w App/lib
Rzeczywisty rezultat: tylko lib-1.0.jar
jest obecny w App/lib
. Wygenerowany raport ivy dla App
nie zawiera żadnej wzmianki o sublib
będącym zależnością od lib
. Nic nie ma też w logach mrówek + bluszcz podczas kompilacji.
Uwaga:lib-1.0.jar
nie jest budowany jako słoik.
Czego mi brakuje w tej konfiguracji?
Aktualizacja
Zrobiłem trochę myślenia, a jedynie wniosek przyjechałem z jest to, że ten problem jest rzeczywiście błąd konfiguracji. Sądząc po tym, że zależność przechodnia nie jest pobierana, możemy pozytywnie powiedzieć, że bluszcz nie posiada żadnych informacji, gdy rozstrzyga lib
. I to ma sens, ponieważ folder Lib/dist
może znajdować się w dowolnym miejscu w systemie plików. Jedynym sposobem uzyskania informacji na temat zależności przechodniów byłaby odpowiednia lokalizacja w pobliżu tego słoika. Który nie jest. Jest to nieco potwierdzone przez komunikat w dziennikach [ivy:retrieve] local: no ivy file found for com.test.lib#lib;1.0: using default data
. Jedynym sposobem przechowywania tych informacji są dane z pamięci podręcznej w %user%/.ivy/cache
. Tam wygenerowane pliki [org]-[artifact]-[conf].xml
zawierają informacje o zależnościach. Zgaduję więc, że to działa poprawnie, będę musiał użyć pamięci podręcznej na poziomie rozdzielczości aplikacji.
Czy to ma jakiś sens, czy ja znowu mam rację?
Bluszcz: postanowienie powinno zostać wywołane przed odzyskaniem. Jakie są błędy, które otrzymujesz? CZY istnieje coś takiego jak "brakująca konfiguracja"? – cantSleepNow
Z tego, co udało mi się zrozumieć, wynika, że nie jest to konieczne. Widzę dla sekcji '[ivy: retrieve]' w dziennikach, że wykonuje rozstrzygnięcie. Nie dostaję żadnych błędów, to tylko przejściowe zależności słoiczków. – HighPredator
Ok (czytanie zaktualizowanej części również) może proszę wyczyścić pamięć podręczną bluszcza i uruchomić ją ponownie. Dodaj również do pytania skrypt (y) mrówki, których używasz do publikowania 'lib' i' sublib'. – cantSleepNow