2014-07-22 3 views
5

Angenommen, wir haben eine Java Anwendung, anstatt eine Bibliothek, die über Maven Central verfügbar ist. Zum Beispiel ist ein solches Projekt jol, das seine entsprechende CLI-Schnittstelle in Maven central hat. Der Hauptunterschied zu einer Bibliothek besteht darin, dass die entsprechende JAR-Datei eine Klasse mit einer entsprechenden main()-Methode und optional einen zugehörigen Main-Class:-Header im JAR-Manifest enthält. Wenn ein solches Artefakt als Abhängigkeit von einem Projekt verwendet wird, lädt Maven die JAR-Datei wie alle anderen Artefakte in das lokale Repository mit seinen Abhängigkeiten.Ausführen einer JAR-Datei direkt aus einem Maven-Repository

Kann man mit Maven eine solche Anwendung direkt ausführen, ohne ein Maven-Projekt einzurichten?

Die exec:java plugin funktioniert gut für lokale Projekte, indem Sie den JVM-Klassenpfad so einrichten, dass Abhängigkeiten verfügbar sind. Der Benutzer muss sich nicht um JAR oder .class Dateispeicherorte und dergleichen kümmern. Von dem, was ich sagen kann, benötigt es leider auch ein umschließendes Maven-Projekt, so dass es nicht von einer beliebigen Kommandozeile aus benutzt werden kann.

+1

Ich würde wahrscheinlich gerade etwas wie http://stackoverflow.com/questions/1776496/a-simple-command-line-to-download-a-remote-maven2-artifact-to-the-local- Reposito mit einem Shell-Skript, das dann das heruntergeladene Artefakt ausführt. Oder schreiben Sie ein einfaches Programm, das Maven Repo spricht und ein Artefakt holen und Maven ganz überspringen kann. –

+0

@DaveNewton: Das Abrufen der JAR-Datei ist nicht das einzige Problem. 'exec: java' zum Beispiel richtet den JVM-Klassenpfad so ein, dass Abhängigkeiten verfügbar sind. * Das * ist was ich bin ... – thkala

+1

Sie können die Abhängigkeiten des Jar programmatisch abrufen und das gleiche tun, obwohl. In jedem Fall, wenn Sie Maven installiert haben, ist die Erstellung eines Ad-hoc-Projekts mit Ihrer Abhängigkeit auf oberster Ebene eine ziemlich kleine POM-Datei. Warum können Sie das Projekt nicht spontan erstellen? Was ist das Problem? –

Antwort

3

Nein, Maven wird nicht tun, was Sie verlangen. Es ist ein Build-Tool, das auf der Grundlage der pom.xml-Datei ein Java-Projekt erstellen soll, das das Projekt beschreibt.

Sie können also kein Maven-Build ohne eine pom.xml-Datei ausführen. Und wenn Sie eine pom.xml haben, dann haben Sie definitionsgemäß ein Maven-Projekt eingerichtet.

Wie @DaveNewton sagt, sollten Sie in der Lage sein, eine sehr kleine pom.xml mit der Abhängigkeit für die betreffende JAR-Datei und das exec-maven-Plugin einzurichten. Ich fürchte, es wird einfach nicht einfacher.

Verwandte Themen