Ho un bundle OSGi che è stato creato usando Maven da un'altra squadra. Il file POM dichiara la sua confezione come "pacchetto" e utilizza il plugin Apache Felix.Come distribuire il bundle OSGi su repository Maven con deploy: deploy-file?
Ho bisogno di distribuire questo artefatto in un repository Maven locale (Nexus) in modo che possa essere utilizzato dai nostri progetti interni.
Ho utilizzato la destinazione deploy:deploy-file
per distribuire il pacchetto nel repository, proprio come si farebbe con un file JAR standard e questo funziona senza errori. Ho estratto il POM incorporato dal fascio e passai che sulla linea di comando, in modo che la linea di comando era:
mvn deploy:deploy-file -Dfile=3rdpartybundle.jar -DpomFile=pom.xml -DrepositoryId=internal -Durl=http://internalserver/nexus
Il problema è che dopo aver distribuito in questo modo, la confezione è impostato per raggruppare e come risultato il nome del manufatto nel repository finisce con un'estensione .bundle, invece che con un'estensione .jar.
Ora, non riusciamo a capire come dichiararlo come una dipendenza. Se lo dichiariamo in questo modo:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bundle</type>
</dependency>
Viene visualizzato un errore che indica che la dipendenza non può essere risolta. La cosa interessante è che le coordinate GAV nel messaggio di errore hanno effettivamente "jar" come valore per il tipo di dipendenza anche se lo impostiamo come "bundle".
Se cambiamo la dipendenza a:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>jar</type>
</dependency>
Otteniamo lo stesso errore di dipendenza irrisolta esatto.
Quindi, come si suppone di distribuire un artefatto confezionato come pacchetto in un repository Maven, in modo che possa essere utilizzato come dipendenza dal tempo di compilazione per un altro progetto?
Grazie
Mi rendo conto che il mio uso del termine "repository locale" potrebbe essere stato confuso. Sto provando a distribuire su un repository Nexus su un server remoto. Il server è condiviso da tutti i membri del nostro team. Quando ho detto "locale", immagino che cosa intendevo dire "all'interno del nostro firewall sulla nostra LAN". –