Chcę, aby słoik znajdował się w bibliotece stron trzecich pod kontrolą źródła, i link do niego poprzez względną ścieżkę z pliku pom.xml.
Jeśli naprawdę tego chcesz (rozumiesz, jeśli nie możesz korzystać z repozytorium korporacyjnego), to radzę użyć lokalnego repozytorium plików dla projektu i nie używaćsystem
zależności o zasięgu. system
Należy unikać zakresu, takie zależności nie działają dobrze w wielu sytuacjach (np. Podczas montażu), powodują więcej problemów niż korzyści.
Zamiast tego zadeklaruj repozytorium jako lokalne dla projektu:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Zainstalować trzeciej partii lib tam korzystając install:install-file
z localRepositoryPath
parametru:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Aktualizacja: Wygląda na to, że install:install-file
ignoruje localRepositoryPath
użycie wtyczki w wersji 2.2. Działa jednak z wersją 2.3 i późniejszymi wtyczek. Więc użyj w pełni kwalifikowanej nazwy wtyczki, aby określić wersję:
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
-Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Dokumentacja maven-install-plugin
Na koniec zadeklaruj to jak każdą inną zależność (ale bez system
zakresu):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Jest to IMHO lepsze rozwiązanie niż korzystanie z system
zakresu, ponieważ twoja zależność będzie traktowana jak dobry obywatel (np. Zostanie uwzględniona w zgromadzeniu i tak dalej).
Teraz muszę wspomnieć, że „właściwym sposobem” radzenia sobie z tą sytuacją w środowisku korporacyjnym (być może nie w tym przypadku) byłoby skorzystanie z repozytorium korporacyjnego.
localRepositoryPath
...basedir/./my-local-repo
jeden.
.Korzystanie z
system
zakresu.${basedir}
to katalog twojej pom.Jednak wskazane jest, aby zainstalować słoik w repozytorium, a nie zatwierdzać go w SCM - w końcu to właśnie próbuje wyeliminować maven.
źródło
To jest inna metoda oprócz mojej poprzedniej odpowiedzi: Czy mogę dodawać słoiki do ścieżki klas maven 2 bez ich instalowania?
Obejdzie to limit podczas korzystania z kompilacji wielomodułowych, zwłaszcza jeśli do pobranego pliku JAR odwołuje się projekt potomny. Zmniejsza to również prace instalacyjne, tworząc pliki POM i SHA1 jako część kompilacji. Pozwala także na umieszczenie pliku w dowolnym miejscu w projekcie bez ustalania nazw lub śledzenia struktury repozytorium maven.
To używa wtyczki maven-install-plug. Aby to zadziałało, musisz skonfigurować projekt wielomodułowy i mieć nowy projekt reprezentujący kompilację, aby zainstalować pliki w lokalnym repozytorium i upewnić się, że jest on pierwszy.
Twój wielomodułowy projekt pom.xml wyglądałby tak:
Plik repository / pom.xml będzie zawierał definicje ładowania plików JAR, które są częścią projektu. Oto niektóre fragmenty pliku pom.xml.
Opakowanie pom zapobiega wykonywaniu jakichkolwiek testów, kompilacji lub generowaniu plików jar. Mięso pom.xml znajduje się w sekcji kompilacji, w której jest używana wtyczka maven-install-plugin.
Aby zainstalować więcej niż jeden plik, wystarczy dodać więcej wykonań.
źródło
To działa dla mnie: powiedzmy, że mam tę zależność
Następnie ręcznie dodaj ścieżkę klasy dla zależności systemowej w ten sposób
Pełna konfiguracja:
źródło
Wcześniej pisałem o tym, jak to zrobić.
Jest bardzo podobny do rozwiązania zaproponowanego przez Pascala, chociaż przenosi wszystkie takie zależności do dedykowanego modułu repozytorium, dzięki czemu nie trzeba go powtarzać wszędzie, zależność jest używana, jeśli jest to kompilacja wielomodułowa.
źródło
Zasadniczo dodaj to do pliku pom.xml:
źródło
przeszliśmy na gradle i działa to znacznie lepiej na grad;). po prostu określamy folder, do którego możemy upuścić słoiki w takich tymczasowych sytuacjach. Wciąż mamy większość naszych słoików zdefiniowanych w typowej sekcji zarządzania zależnościami (tj. Takiej samej jak maven). To tylko jedna zależność, którą definiujemy.
więc w zasadzie teraz możemy po prostu wrzucić dowolny słoik do katalogu lib do tymczasowego testowania, jeśli nie jest to gdzieś repozytorium.
źródło
Jeden mały dodatek do rozwiązania opublikowanego przez Pascala
Gdy podążyłem tą drogą, podczas instalowania jar jardbc wystąpił błąd w maven.
Po dodaniu opcji -DpomFile problem został rozwiązany.
źródło
Za pomocą Eclipse można wygenerować uruchamialny plik Jar: Export / Runable Jar
źródło