Zależności w projekcie, artefakt z repozytorium czy submoduł git?

0

Projekt z zależnościami. (konkretnie to JVM+gradle trzymane w git, konkretnie to Android ale to nieistotne)
Zależności to moje biblioteki - mam do wyboru albo podłączyć te zależności jako

submoduły gita albo
budować je i dystrybuować wersjonowane artefakty przez moją instancję repozytorium artefaktów (jfrog)

Które podejście ma jakie wady i zalety?

4

Submoduły gita to ostateczność. Lepiej używać jfroga

Update może trochę rozwinę jak mam wiecej czasu.submoduły są problematyczne. Może git ich dobrze nie ogarnia, może ja? Pamiętam że były problemy przy zmienia nazwy submodułu.
Dodatkowo submoduły powodują problemy niechlujstwa przy developowaniu, które teoretycznie można usunąć poprzez review i testy, ale wychodzi różnie. Klasycznym jest to że ktoś zmienił coś w bibliotece i dostosował w projekcie, ale wypchnął tylko projekt a zmiany w bibliotece są tylko u niego na kompie :D w wersji hard idzie jeszcze na dwutygodniowy urlop i trzeba mu się włamywać na kompa :D
W przypadku jfroga takich problemów nie ma bo biblioteka musi być zawsze wypchnięta najpierw. Poza tym można mieć sensowny pipeline na jenkinsie dla biblioteki więc nikt nie użyje biblioteki która nie przeszła testów (co w przypadku submodułu jest możliwe)

Drogą pośrednią między submodułem a artefaktem w repozytorium jest budowanie biblioteki ze zdalnego repo, ale chyba żadne narzędzie do mudowania w Javie tego nie udostepnia. (A jednak @hauleth znalazł) A szkoda (W Haskellu jest taka opcja, ale jeszcze nie testowałem)

1

Od trzymania artefaktów są repozytoria artefaktów (archiva, nexus, artifactory etc).

1

Nie znam się za bardzo na Gradle, ale może takie coś by wam pomogło. Ew. użyć repozytorium artefaktów jak reszta mówi.

0

minus który ja widzę to brak wersjonowania w repo przy submodułach? tzn. nie widać w historii repo która wersja jest używana, mam rację?

0

Jeżeli twoje biblioteki są bibliotekami, to powinny być trzymane jako artefakty, z indywidualnie nadawanymi numerami i oddzielnie wydawane. Minus to konieczność podbijania wersji zależności w głównym programie, po każdej zmianie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1