2009-10-08 14 views
7

ich einige Dritte Gläser zu meinem Repository installiert haben Sie den folgenden Befehl:Maven install-Datei generieren wird nicht pom.xml

mvn install:install-file -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar 

aber sobald ich mvn kompilieren, klagt Maven, dass es Keine Pom-Datei im Repository und versucht, sie herunterzuladen, kann aber nicht bewirken, dass sie nicht in einem Remote-Repository veröffentlicht wird.

Hier ist die genaue Nachricht von Maven:

Downloading: http://repo1.maven.org/maven2/nifty-gui/nifty-gui/1.0/nifty-gui-1.0.pom 
[INFO] Unable to find resource 'nifty-gui:nifty-gui:pom:1.0' in repository central (http://repo1.maven.org/maven2) 

So wie ich Maven bekommen eine pom-Datei für das Glas zu erzeugen und es in meinem lokalen Repository setzen?

Antwort

15

Sie sagen es! :-)

mvn install:install-file 
    -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar 
    -DgroupId=nifty-gui 
    -DartifactId=nifty-gui 
    -Dversion=1.0 
    -Dpackaging=jar 
    -DgeneratePom=true 

(Befehl auf mehrere Zeilen platziert, so dass Sie leicht den letzten Parameter sehen können.)

Nizza, nicht wahr? In Zukunft können Sie die Dokumentation eines Plug-ins aufrufen, seine Ziele anzeigen und alle akzeptierten Parameter sehen. Zum Beispiel the install-file goal.

Edit:

Im Hinblick auf die Frage nach dem Standardverhalten des generatePom Flag, zeigt die Dokumentation wird standardmäßig auf true, und der Code scheint, dass zu unterstützen. Wenn Maven 2.0.9 mit dem maven-install-plugin Version 2.2 verwendet wird (beide Versionen sind etwas veraltet), wird kein POM generiert. Wenn Sie also die Version (en) inkrementieren, wird der Standard funktionieren.

> touch DeleteMe.jar 
> mvn install:install-file -DgroupId=Delete -DartifactId=Me -Dversion=0.0.0 -Dpackaging=jar -Dfile=DeleteMe.jar 
... 
[INFO] BUILD SUCCESSFUL 
... 
> ls ~/.m2/repository/Delete/Me/0.0.0/ 
Me-0.0.0.jar 

(No erzeugt POM.)

+0

Ich habe die generatePom-Option nicht übergeben, weil die Dokumentation besagt, dass sie standardmäßig auf "true" gesetzt ist. Ich werde meine Software aktualisieren, um sicherzustellen, dass alles synchron ist. Vielen Dank! –

2

Das install:install-file Ziel hat einen optionalen Parameter generatePom (ab Version 2.1), die erlaubt:

generieren einen minimalen POM für den Artefakt, wenn keine über die Parameter pomFile zugeführt wird.
Standardmäßig true wenn es kein vorhandenes POM in das lokale Repository noch gibt.

Dieser Parameter standardmäßig auf true seit version 2.3 (und false in 2.1, 2.2). Wenn Sie also eine Version des Installations-Plugins vor Version 2.3 verwenden, müssen Sie den Parameter im Befehl übergeben.

Nur für den Fall, um die Syntax explizit die Version 2.3 des Plugins wäre installieren zu verwenden:

mvn org.apache.maven.plugins:maven-install-plugin:2.3:install-file \ 
    -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui \ 
    -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar 
+0

Die Plug-in-Dokumentation besagt, dass das Flag "generatePom" standardmäßig auf true gesetzt ist, aber ich musste es immer manuell bereitstellen. Eine schnelle Überprüfung des Quellcodes für das Plug-in sieht so aus, als ob es tatsächlich auf false gesetzt ist. – SingleShot

+0

Hmmm. Auf den zweiten Blick stimme ich zu, dass der Code standardmäßig auf "true" eingestellt ist. Für eine Erklärung meiner Verwirrung, siehe meine Bearbeitung meiner Antwort ... Danke! – SingleShot

-1

Gut und im Fall Ihre Dritte Bibliothek ist wirklich „geschicktes gui“ alles, was Sie tun müssen, ist den raffinierten Maven-Repository zu Ihrem pom hinzuzufügen.xml:

<repositories> 
    <repository> 
    <id>nifty-maven-repo.sourceforge.net</id> 
    <url>http://nifty-gui.sourceforge.net/nifty-maven-repo</url> 
    </repository> 
</repositories> 

und Ihre Maven Projekt automatisch geschickte wird herunterladen: D

PS: Ich weiß, dass dies nicht Ihre eigentliche Frage, aber es könnte helfen, mit geschickter Integration :)

0

hatte ich die gleiche Frage, die ich, wie Sie denken, ich hatte ein Shell-Skript mit dem installieren: install-Datei Ziel wie folgt aus:

mvn -o install:install-file -e 
    -DgroupId=org.jfree.jcommon 
    -DartifactId=jcommon 
    -Dversion=1.0.15 
    -Dpackaging=jar 
    -Dfile=jcommon-1.0.15.jar 

paar Dinge zu beachten:

artifactId darf nicht '.' ... nicht sicher warum, aber die Installation würde fehlschlagen, wenn diese '.' enthält

Das Ausführen des obigen Befehls erzeugte nur ein Pom mit Maven 3.x. Durch Hinzufügen der folgenden Argumente konnte ich die zu kopierenden Jars abrufen:

-DgeneratePom=true -DupdateReleaseInfo=true 
Verwandte Themen