2009-10-08 12 views
7

mam zainstalowane kilka słoików strony trzeciej do mojego repozytorium za pomocą następującego polecenia:Maven zainstalować plik nie będzie generować 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 

Jednak, gdy ja mvn skompilować, Maven skarży się, że nie ma nie ma pliku pom w repozytorium i próbuje go pobrać, ale nie może spowodować, że nie zostanie opublikowany w żadnym zdalnym repozytorium.

Oto dokładny komunikat z 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) 

Więc jak mogę Maven, aby wygenerować plik POM dla tego słoika i umieścić go w moim lokalnym repozytorium?

Odpowiedz

15

poinformować go! :-)

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 

(Komenda umieszczone na wielu liniach, dzięki czemu można łatwo zobaczyć ostatni parametr.)

Nicea, hę? W przyszłości możesz przejść do dokumentacji wtyczki, zobaczyć jej cele i zobaczyć wszystkie parametry, które akceptujesz. Na przykład the install-file goal.

Edit:

Odnośnie kwestii zachowanie domyślne flagi generatePom dokumentacja wskazuje, że domyślnie na true, a kod wydaje się obsługuje. Jednak przy użyciu Maven 2.0.9 z opcją maven-install-plugin w wersji 2.2 (obie wersje są nieco nieaktualne), nie generuje POM. Być może powiększenie wersji umożliwi domyślne działanie.

> 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 

(nr generowane POM.)

+0

Nie przekazałem opcji generatePom, ponieważ w dokumentacji podano domyślną wartość true. Zaktualizuję oprogramowanie, aby upewnić się, że wszystko jest zsynchronizowane. Dzięki! –

2

Celem install:install-file ma opcjonalny parametr generatePom (od wersji 2.1), który pozwala na:

Generowanie minimalny POM dla artefaktu jeśli żaden dostarczany jest za pośrednictwem parametru pomFile .
Domyślnie jest to true, jeśli nie ma istniejącego POM w lokalnym repozytorium.

Parametr domyślnie true od version 2.3 (i false w 2.1, 2.2). Więc jeśli używasz wersji wtyczki instalacyjnej przed wersją 2.3, musisz przekazać parametr w komendzie.

Tylko w przypadku, składnia jawnie użyć wersji 2.3 wtyczki zainstalować byłoby:

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

Dokumentacja wtyczki mówi, że flaga "generatePom" jest ustawiona na wartość true, ale zawsze musiałem ją podać ręcznie. Szybkie sprawdzenie kodu źródłowego wtyczki wygląda na to, że domyślnie jest to fałsz. – SingleShot

+0

Hmmm. Na drugi rzut oka zgadzam się, że kod wydaje się domyślnie równoważny "true". Aby wyjaśnić moje zamieszanie, zobacz moją odpowiedź na moją odpowiedź ... Dzięki! – SingleShot

-1

No i w przypadku, gdy osoba trzecia biblioteka naprawdę jest "ładne gui" wszystko, co musisz zrobić, to dodać fajną repozytorium maven do pom.xml:

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

i projekt Maven automatycznie pobierze ładne: D

PS: Wiem, że to nie był rzeczywisty pytanie, ale może to pomóc w integracji fajną :)

0

miałem sam problem myślę jak ty, miałem skrypt używając zainstalować: cel install-plików takiego:

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

Kilka rzeczy do uwaga:

artifactId nie może zawierać "." ... nie wiem dlaczego, ale instalacja nie powiedzie się, jeśli zawiera "."

Uruchomienie powyższego polecenia wygenerowało tylko pom z mavenem 3.x. Dodając następujące argumenty, udało mi się skopiować słoik:

-DgeneratePom=true -DupdateReleaseInfo=true 
Powiązane problemy