Frage

Ich habe eine einfache Anwendung mit Netbeans für die Entwicklung und Maven für den Aufbau et all. Meine Anwendung verwendet Kamel, Feder XML konfiguriert. Ich wollte eine ausführbare jar mit Abhängigkeiten bauen, so dass ich die Maven-Montage-Plugin bin mit mit 'jar-with-deps' Descriptor. Das Glas wird gebaut in Ordnung, aber ich denke, dass da alle Abhängigkeiten ausgepackt bekommen und einige von ihnen haben die gleichen Ressourcen in den gleichen Wegen wie andere, dann sie sie überschreiben. Ich überprüfte dies durch das Glas mit winrar Surfen und ich mehrere Vorkommen der gleichen Datei an vielen Stellen gefunden. Ich denke dies durch eine einfache Konfiguration Maven unlösbaren ist, weil ich nicht eine Abhängigkeit will, um eine Ressource in einem bestimmten Pfad, auch durch eine andere Abhängigkeit verwendet stoppen kann. BTW die App läuft ok innerhalb NetBeans. Ich sah auch mehrere Vorkommen meiner Anwendungsklassen. Das ist mehr seltsam, aber ich kann nicht herausfinden, warum.

Alles in allem, ich möchte wissen, ob:

  1. Gibt es eine einfache Lösung, die solche Konflikte und zumindest berichtet findet, wenn sie sie nicht korrigiert? (Und wie)

  2. Kann ich das Archivierungs sagen (in Maven) nicht die deps auszupacken, sondern sind nur die Gläser in einem Mutterglas und dann sind nur die Gläser im Manifest Classpath und wie? Wird dies das Problem lösen oder es hat das gleiche Ergebnis?

  3. Warum gibt es auch mehrere Vorkommen meiner Anwendungsklassen im selben Pfad?

Um Sie ein Bild von dem Problem, das aktuelle resultierende Glas, wenn es mit WinRAR aufgerufen, verfügt über 3 Instanzen von ‚log4j.properties‘ in Wurzelpfad und 7 Instanzen Datei ‚spring.schemas‘ in meta-inf / path , um ein paar zu nennen.

War es hilfreich?

Lösung

Ich glaube nicht, dass possbile ist es, alle .jars in einem einzigen .jar in .zip. Viele dieser .jars haben Ressourcen in ihren .jar-Datei (log4j.properties, Frühjahr XML-Dateien), die im selben Ordner befindet, so wird es Zusammenstoß sein.

Es ist besser, Startskripte zur Verfügung zu stellen, die Ihre Anwendung, indem der Classpath starten kann. Und ich erinnere mich in beiden jdk1.5 oder ist es 1,6 Sie einen Ordner als Classpath festlegen können, und es werden alle Gläser aus diesem Ordner enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top