Ant Jar erzeugen mit Ressourcen in Unterordnern

FeinesFabi

Mitglied
Hi,
ich würde gerne per Ant mein Projekt als Jar-Exportieren. Dabei hat mein Projekt folgende Struktur:

  • src
  • lib
  • res
  • bin

Ich habe nun also zwei Filesets erstellt:

Java:
<fileset id="ressources" dir="res">
		<include name="**/*.*" />
</fileset>

<fileset id="libs" dir="lib">
		<include name="**/*.*" />
</fileset>

Und mein Target sieht so aus:

Java:
<jar jarfile="${jarfile}" basedir="bin">
    		<fileset refid="ressources" />
    		<fileset refid="libs"/>
</jar>

Das funktioniert auch, aber in der fertigen Jar Datei sind die Dateien aus res und lib im Hauptverzeichnis. Wie bekomme ich die in Unterordner res und lib innerhalb der Jar Datei?

Danke im Voraus,
Fabi
 
M

maki

Gast
Den Ordner res in die jar mitzupacken und dabei als Ornder zu behalten ist sehr unüblich, wozu sollte eigentlich der lib Ordner mitrein?
Jar in Jar geht AFAIK nur mit OSGi.
 

FeinesFabi

Mitglied
Das fertige Jar wird zum einen in einem OSGI und zum anderen in einem Android Projekt verwendet, und ermöglicht eine DPWS Kommunikation zwischen einem PC und einem Android Handy.

Da ich den DPWS Teil immer zweimal schreiben musste, habe ich ihn nun in ein separates Projekt gepackt, dass ich als Jar an die beiden Anderen übergebe.
Der manuelle Jar-Export (Eclipse-> Export as Jar) funktioniert auch. Nur mein Ant-Script will halt nicht.
 

Wildcard

Top Contributor
Der Trick ist ein prefix Attribut und ein zipfileset statt ein normales fileset zu verwenden:
Zip Task

Jar in Jar funktioniert zwar in OSGi, man benutzt es aber normal nur wenn man eine andere jar mit OSGi Manifest neu verpackt und vermeidet es sonst eher, aber funktioniert das denn in Android?
Warum verpasst du deiner library jar nicht ein OSGi kompatibles Manifest und das sollte dann in OSGi und auf Android laufen und du kannst dir das ganze sparen.

OSGi Bundles per Ant zu bauen finde ich sowieso etwas ungewöhnlich, aber wenn du nicht viele Abhängigkeiten hast mag das ja funktionieren...
 

FeinesFabi

Mitglied
Okay, habs mir heute nocheinmal angesehen und verstehe jetzt auch, warum "Jar in Jar" nicht sinnvoll ist. :oops:

Lösung: ich kopiere per ant die "gekapselte" Jar in die andren Projekte, so dass diese sowohl jene als auch meine mit ant erzeugte Jar "importieren".

Und noch ein kleines Missverständniss: Mein ereugtes Jar ist kein OSGI Bundle, sondern reines Java. Es wird aber an ein OSGI Bundle und ein Android Packet übergeben - die können ja beide Java Code importieren.

Danke für eure Hinweise,
Eurer Fabi.
 

Ähnliche Java Themen

Neue Themen


Oben