Jak ręcznie zainstalować artefakt w Maven 2?

96

Napotkałem kilka błędów, gdy próbowałem ręcznie zainstalować artefakt za pomocą Maven 2. Chciałem zainstalować jar z lokalnego katalogu za pomocą polecenia

mvn install:install-file -Dfile=jta-1.0.1B.jar

Ale Maven podał błąd kompilacji, który brzmi następująco:

Invalid task '.01B.jar': you must
specify a valid lifecycle phase, or a
goal in the format plugin:goal or
pluginGroupId:pluginArtifactId:pluginVersion:goal

Czy jest błąd w moim poleceniu?

liangzan
źródło
Jaki jest stan tego? Czy problem został rozwiązany?
Matt

Odpowiedzi:

147

Musisz podać groupId, artifactId i wersję artefaktu:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dpackaging=jar \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true
Romain Linsolas
źródło
8
-Dpackaging = brakuje jar lub podobnego
kaboom
@kaboom No! Domyślnie opakowanie to słoik, więc nie musisz tego określać w poleceniu ...
Romain Linsolas
5
@romaintaz kaboom jest poprawne; potrzebujesz -Dpackaging = jar (lub jakikolwiek inny typ), w przeciwnym razie pojawi się błąd informujący o braku „opakowania”. "
Jack Edmonds
3
Wygląda na to, że parametr package jest potrzebny, chyba że podasz plik pom. W tym drugim przypadku typ opakowania jest pobierany z pom.
Romain Linsolas
1
Jeśli używasz PowerShell, upewnij się, że używasz cytatu w podobny sposób"-DgroupId=javax.transaction"
ankitjaininfo
38

Zgodnie z przewodnikiem Mavena dotyczącym instalowania plików JAR innych firm , polecenie brzmi:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

Rzeczywiście potrzebujesz opcji pakowania. To odpowiada na pierwotne pytanie.

Teraz, w swoim kontekście, walczysz ze słoikiem dostarczonym przez Sun. Powinieneś także przeczytać stronę Radzenie sobie z Sun JARs . Dowiesz się tam, jak pomóc mavenowi w dostarczaniu lepszych informacji o lokalizacji słoików Sun i jak dodać repozytorium Java.net Maven 2, które zawiera jta-1.0.1B.jar . Dodaj to w swoim settings.xml(nie przenośnym) lub pom.xml (przenośnym):

  <repositories>
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
      <layout>default</layout>
    </repository>
  </repositories>
Pascal Thivent
źródło
13

Musiałem dodać opakowanie, więc:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true \
  -Dpackaging=jar
BryanH
źródło
Miałem wiele problemów z ręczną instalacją pliku jar i kończyło się to niepowodzeniem, dopóki nie wpisałem go dokładnie w ten sposób. Teraz działa!
gregturn
4

Jeśli kiedykolwiek wystąpią podobne błędy podczas korzystania z programu Windows PowerShell, wypróbuj prosty wiersz poleceń systemu Windows. Nie dowiedziałem się, co to spowodowało, ale wydaje się, że PowerShell interpretuje niektóre parametry Mavena.

Koraktor
źródło
Spójrz na odpowiedź S. Bollwebera powyżej. I przynajmniej TakeCommand wyraża to samo zachowanie.
Martin
1
Nie ma powodu, aby negatywnie oceniać moją odpowiedź - odpowiedział S. Bollweber kilka miesięcy po mnie.
Koraktor
2

Wszystkie opublikowane odpowiedzi słusznie omawiają tę kwestię ze ścisłej perspektywy. Moje problemy polegały na wykonaniu tej instalacji dla mavena przy użyciu Netbeans jako mojego podstawowego IDE. Poniższy artykuł okazał się pomocny.

Podziękowania dla następującego artykułu na forum netbeans: http://forums.netbeans.org/topic22907.html

  1. W projekcie Maven otwórz okno dialogowe „Dodaj zależność”
  2. Uzupełnij groupId, artifactId i version i wypełnij je, OK.
  3. Zależność zostanie dodana do pom.xml i pojawi się w węźle "Biblioteki" projektu maven
  4. Kliknij prawym przyciskiem myszy węzeł Lib i „ręcznie zainstaluj artefakt”, wypełnij ścieżkę do jar. Jar powinien być zainstalowany w lokalnym repozytorium Maven ze współrzędnymi wprowadzonymi w kroku 2)
Paweł
źródło