Mam pakiet OSGi, który został zbudowany przy użyciu Maven przez inny zespół. Plik POM deklaruje jego opakowanie jako "pakiet" i używa wtyczki Apache Felix.Jak wdrożyć pakiet OSGi do repozytorium Maven z wdrożeniem: deploy-file?
Muszę wdrożyć ten artefakt do lokalnego repozytorium Maven (Nexus), aby mógł być używany przez nasze wewnętrzne projekty.
Użyłem celu deploy:deploy-file
, aby wdrożyć pakiet w repozytorium, tak jak w przypadku standardowego pliku JAR, który działa bezbłędnie. I ekstrakcji wbudowanego POM z wiązki i podał, że w linii poleceń, więc linia poleceń było:
mvn deploy:deploy-file -Dfile=3rdpartybundle.jar -DpomFile=pom.xml -DrepositoryId=internal -Durl=http://internalserver/nexus
Kwestia jest taka, że kiedy wdrożyć go w ten sposób, opakowanie jest ustawione na pakiet iw rezultacie nazwa artefaktu w repozytorium kończy się rozszerzeniem .bundle, zamiast rozszerzeniem .jar.
Teraz nie możemy dowiedzieć się, jak zadeklarować to jako zależność. Jeśli zadeklarujemy to w ten sposób:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bundle</type>
</dependency>
Otrzymujemy błąd stwierdzający, że zależności nie można rozwiązać. Ciekawe jest to, że współrzędne GAV w komunikacie o błędzie faktycznie mają "jar" jako wartość dla typu zależności, mimo że ustawiliśmy ją jako "pakiet".
Jeśli zmienimy zależność do:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>jar</type>
</dependency>
Dostajemy dokładnie ten sam błąd zależnościach nierozwiązany.
W jaki sposób należy wdrożyć artefakt pakowany jako pakiet do repozytorium Maven, aby mógł być używany jako zależność w czasie kompilacji dla innego projektu?
Dzięki
Zdaję sobie sprawę, że moje użycie terminu "lokalne repozytorium" mogło być mylące. Próbuję wdrożyć do repozytorium Nexus na zdalnym serwerze. Serwer jest udostępniany przez wszystkich w naszym zespole. Kiedy powiedziałem "lokalny", domyślam się, co miałem na myśli "wewnątrz naszej ściany ogniowej w naszej sieci LAN". –