Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles

musiKk

Top Contributor
Hallo,

ein kleiner Auszug aus [c]mvn dependency:tree[/c]:

Code:
[INFO] +- com.company:mybundle:jar:1.1.0-SNAPSHOT:compile
[INFO] |  +- org.apache.felix:org.apache.felix.main:jar:3.0.7:compile
[INFO] |  +- org.apache.felix:org.apache.felix.framework:jar:3.0.2:compile
[INFO] |  +- org.apache.felix:org.apache.felix.gogo.command:jar:0.8.0:compile
[INFO] |  |  +- org.apache.felix:org.apache.felix.gogo.runtime:jar:0.8.0:compile
[INFO] |  |  \- org.apache.felix:org.apache.felix.bundlerepository:jar:1.6.0:compile
[INFO] |  |     \- org.easymock:easymock:jar:2.4:compile

Easymock 2.4 ist kein OSGi-Bundle, sondern ein normales JAR. Neuere Versionen wohl schon, aber das kann ich dem Felix Bundlerepository ja schlecht vorschreiben. Wie soll ich jetzt vorgehen, damit das nicht-Bundle zur Laufzeit des OSGi-Containers (in diesem Fall Felix) gefunden werden kann? Ich stehe da etwas auf dem Schlauch.

Das bisherige Vorgehen eines (nicht von mir) selbstgestrickten Build-Tools ist, in allen Abhänigkeiten zu schauen ob es Bundle-Informationen im Manifest gibt. Falls ja fliegt das JAR in ein Bundle-Verzeichnis, ansonsten in ein Lib-Verzeichnis. Letzteres wird beim Start hart in den Classpath eingetragen: [c]java -cp "lib/*.jar" ... org.apache.felix.main.Main[/c]. Das sollte doch auch sauberer gehen, oder?

Gruß
mK
 
M

maki

Gast
Vorab: Kenne mich mit Felix nicht aus, nutze von jeher nur Equinox.

Was mich wundert ist, dass jemand ein Mocking Framework zur Laufzeit braucht (egal ob OSGi oder nicht), sollte doch eigentlich nur für Unittests genutzt werden.
 

musiKk

Top Contributor
Ok, ich habe mich inzwischen nochmal mit den entsprechenden Entwicklern zusammengesetzt und wir haben festgestellt, dass die zur Laufzeit benötigten nicht-OSGi-Abhängigkeiten vom durch Bnd inspirierten [c]maven-bundle-plugin[/c] in die entsprechenden Projekte kopiert werden. Insofern war der ganze Aufriss mit dem Lib-Verzeichnis evtl. überflüssig.

Das mit dem Dependency-Tree wundert mich dennoch. Easymock wird zur Laufzeit allem Anschein nach nicht benötigt. [c]mvn dependency:tree[/c] listet es dennoch. Es wäre nützlich, wenn ich zwischen solchen und zur Laufzeit benötigten unterscheiden könnte.
 
M

maki

Gast
Es wäre nützlich, wenn ich zwischen solchen und zur Laufzeit benötigten unterscheiden könnte.
das kann man in maven, nennt sich "scope" und dieser steht hier auf "compile" anstatt auf "test"
Code:
org.easymock:easymock:jar:2.4:compile
Warum das entweder nciht richtig gemacht wurde oder EasyMock doch zur Laufzeit gebraucht wird kann ich dir von hier aus leider nicht sagen.

Nebenbei, imho ist es übertrieben für eine Fremdlib ein Maven Projekt welches das Bundle Plugin nutzt zu erstellen, reicht ja wenn es einmal gemacht wird, das geht mit Eclipse schneller:
How to create Eclipse plugins from jars
 

musiKk

Top Contributor
Nebenbei, imho ist es übertrieben für eine Fremdlib ein Maven Projekt welches das Bundle Plugin nutzt zu erstellen

Ich weiß jetzt nicht, wo die Grenzen zu ziehen sind, aber es ist schon mehr als eine Abhängigkeit. Der Dependency-Tree ist schon um einiges größer als das Fragment aus meinem ersten Post.

Inzwischen sieht es so aus, dass die Bundles die Abhängigkeiten durch das [c]maven-bundle-plugin[/c] automatisch reinkopiert bekommen. Das größte Problem was sich dadurch noch stellt ist, wie ich das ganze deploye. Momentan mache ich einfach ein [c]mvn -DoutputDirectory=mein-bundle-dir dependency:copy-dependencies[/c] und alles ist gut. Dadurch habe ich zwar auch ein paar Bibliotheken doppelt (die verwendeten nicht-OSGi-Libs sind jetzt einmal in den verwendenden Bundles und noch einmal als jar vorhanden - der Abhängigkeitsmechanismus von Maven kann das ja nicht unterscheiden), aber die werden von Felix ignoriert. So richtig glücklich bin ich damit allerdings noch nicht...

Vielleicht ist OBR doch noch einen Blick wert...
 
M

maki

Gast
Um eine target Platform zu erstellen nutze ich meist das assembly plugin, wenn man die OSGi Bundles sowieso neu erstellt, kann man auch darauf achten dass nur OSGi Bundles als Dependencies referenziert werden.
wenn man Orbit Bundles nutzt, muss man diese soweiso noch mavenisieren, das Spring Enterprise Repository bietet auch schon sehr viele OSGI-fizierte Libs an, inkl. Maven Konfig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
D [ERLEDIGT] Probleme mit Authorization in Nexus und mvn deploy plugin Tools - Maven, Gradle, Ant & mehr 1
G Maven site-deploy per SSH ohne Benutzereingabe Tools - Maven, Gradle, Ant & mehr 1
B Applet: com.sun.deploy.security.BlockedException :-( Tools - Maven, Gradle, Ant & mehr 0
L Remote-Deploy mit Maven?! Tools - Maven, Gradle, Ant & mehr 4
reibi Maven "mvn deploy" in offentliches REPO verhindern Tools - Maven, Gradle, Ant & mehr 5
B Maven deploy-file frage Tools - Maven, Gradle, Ant & mehr 6
P [Maven2] Deploy auf Artifactory mit LDAP Authentication Tools - Maven, Gradle, Ant & mehr 10
ModellbahnerTT Unterschied build und deploy Tools - Maven, Gradle, Ant & mehr 3
P JavaFX als Bundles ausliefern Tools - Maven, Gradle, Ant & mehr 4
Guybrush Threepwood Deployment auf Mac: Update von App Bundles Tools - Maven, Gradle, Ant & mehr 3
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
dtr84 Apache Ivy - Plattform-spezifische Abhängigkeiten in der "ivy.xml" parametrisieren Tools - Maven, Gradle, Ant & mehr 1
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven Site bleibt bei Abhängigkeiten hängen. Tools - Maven, Gradle, Ant & mehr 2
E Ant Problem mit Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 2
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
X Maven Auflösung von transitiven Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 5
V Projekt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
X Maven Abhängigkeiten in die jar einbinden Tools - Maven, Gradle, Ant & mehr 10
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
S Maven Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
B Maven Abhängigkeit zu Pom vs direkten Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben