Liefern eines einzelnen Glases mit einem Maven-Projekt

7

Ich möchte meinen Kunden eine einzelne .jar-Datei liefern, aber mein Projekt wird derzeit mit Maven erstellt, und ich habe mehrere Module, die jeweils eine einzelne .jar-Datei generieren.

Ich weiß, dass das Verschachteln verschiedener .jar-Dateien keine gute Idee ist, also weiß ich nicht, wie ich das erreichen kann.

Irgendwelche Ideen?

    
Gonzalo Garcia Lasurtegui 06.10.2010, 14:01
quelle

4 Antworten

8

Stellen Sie sich zunächst einmal die Frage, ob Sie wirklich einen guten Grund haben, Ihre Anwendung und alle ihre Abhängigkeiten in einem einzigen Gefäß zu verpacken. Ich habe überhaupt keinen sehr guten Grund dafür gefunden (die meisten Gründe stehen in Zusammenhang mit organisatorischer Politik, Dummheit oder einfach nur Ignoranz). Der Weg zu gehen ist, Bibliotheken in ihren eigenen Gläsern zu halten und ein .zip / .tar.gz zu liefern, das alle Ihre Bibliotheken und Ihre Anwendung mit entweder

enthält
  1. Eine ausführbare .jar mit dem Classpath-Setup entsprechend in Ihre MANFIEST.MF-Datei
  2. a .bat / .sh Skript, das Java und Builds aufruft ein geeigneter Klassenpfad basierend auf deine Deps

Verwenden Sie umgekehrt JNLP (besser bekannt als Java Web Start).

Wenn Sie wirklich möchten, dass maven all Ihre Abhängigkeiten und Ihre Anwendung unter einem einzigen jar bündelt, wollen Sie das " jar-with-dependencies "vordefinierte Assembly . Die Maven-Assembly-Plug-in-Nutzungsseite zeigt auch, wie Sie dies ebenfalls tun könnten.

    
whaley 06.10.2010, 14:16
quelle
13

Wenn Sie wirklich in diese Richtung gehen wollen, gibt es mehrere Möglichkeiten:

Abhängig von Ihren genauen Anforderungen und Einschränkungen bevorzugen Sie möglicherweise das eine oder das andere.

    
Pascal Thivent 06.10.2010 14:54
quelle
1

Tatsächlich ist das Verschachteln von .jar-Dateien nicht möglich. Ein Glas kann keine anderen Gläser enthalten.

.war- und .ear-Dateien können jars enthalten, und das ist eine gute Lösung, wenn Sie eine J2EE-Anwendung bereitstellen.

Wenn Ihre App jedoch nur J2SE ist, empfehle ich Ihnen, das Maven Assembly-Plugin zu betrachten. Wie der Name schon sagt, können Sie damit eine einzige Binärdistribution Ihres Builds erstellen.

    
RonU 06.10.2010 14:10
quelle
1

Sie können auch das Maven Shade-Plugin ausprobieren. Ссылка

Allgemeine Anweisungen zur Verwendung des Schatten-Plugins finden Sie auf der Benutzungsseite. Einige spezifischere Anwendungsfälle werden in den folgenden Beispielen beschrieben. Last but not least, bringen Benutzer gelegentlich zusätzliche Beispiele, Tipps oder Errata zur Wiki-Seite des Plugins bei.

Falls Sie noch Fragen zur Verwendung des Plugins haben, wenden Sie sich bitte an die Benutzer-Mailingliste. Die Beiträge in der Mailingliste sind archiviert und könnten bereits die Antwort auf Ihre Frage als Teil eines älteren Threads enthalten. Daher lohnt es sich auch, das Mail-Archiv zu durchsuchen / durchsuchen.

Wenn das Plugin eine Funktion fehlt oder einen Defekt aufweist, können Sie eine Feature-Anfrage oder einen Fehlerbericht in unserem Issue Tracker ausfüllen. Wenn Sie ein neues Problem erstellen, geben Sie bitte eine umfassende Beschreibung Ihres Anliegens an. Besonders zur Behebung von Fehlern ist es wichtig, dass die Entwickler Ihr Problem reproduzieren können. Aus diesem Grund werden vollständige Debug-Protokolle, POMs oder am liebsten kleine Demoprojekte, die an das Problem angehängt sind, sehr geschätzt. Natürlich sind Patches auch willkommen. Mitwirkende können das Projekt aus unserem Quellen-Repository auschecken und finden ergänzende Informationen im Leitfaden zur Hilfe bei Maven.

    
sam 13.08.2012 20:55
quelle

Tags und Links