Bagaimana cara menginstal artefak secara manual di Maven 2?


96

Saya mengalami beberapa kesalahan ketika saya mencoba menginstal artefak secara manual dengan Maven 2. Saya ingin menginstal jar dari direktori lokal dengan perintah

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

Tapi Maven memberikan kesalahan build yang berbunyi seperti:

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

Apakah ada kesalahan dengan perintah saya?


Apa status ini? Apakah pertanyaan Anda terselesaikan?
Matt

Jawaban:


147

Anda perlu menunjukkan groupId, artifactId dan versi artefak Anda:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dpackaging=jar \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true

8
-Dpackaging = jar atau sejenisnya hilang
kaboom

@aboom Tidak! Secara default, kemasannya adalah jar, jadi Anda tidak perlu menentukan ini dalam perintah ini ...
Romain Linsolas

5
@romaintaz kaboom benar; Anda membutuhkan -Dpackaging = jar (atau apa pun tipenya) jika tidak, Anda akan mendapatkan pesan kesalahan tentang "'pengemasan' hilang."
Jack Edmonds

3
Tampaknya parameter pengemasan diperlukan kecuali jika Anda menyediakan file pom. Dalam kasus terakhir, jenis paket diambil dari pom.
Romain Linsolas

1
Jika menggunakan PowerShell, pastikan Anda menggunakan kutipan juga"-DgroupId=javax.transaction"
ankitjaininfo

38

Menurut Panduan maven untuk memasang JAR pihak ketiga , perintahnya adalah:

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

Anda memang membutuhkan opsi pengemasan. Ini menjawab pertanyaan asli.

Sekarang, dalam konteks Anda, Anda bertarung dengan toples yang disediakan oleh Sun. Anda juga harus membaca halaman Coping with Sun JARs . Di sana, Anda akan belajar bagaimana membantu maven untuk memberikan Anda informasi yang lebih baik tentang lokasi Sun jars dan bagaimana menambahkan repositori Java.net Maven 2 yang berisi jta-1.0.1B.jar . Tambahkan ini di settings.xml(bukan portabel) atau pom.xml (portabel):

  <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>

13

Saya harus menambahkan kemasan, jadi:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true \
  -Dpackaging=jar

Saya mengalami banyak masalah saat menginstal file jar secara manual, dan terus gagal sampai saya mengetiknya persis seperti ini. Sekarang berhasil!
gregturn


4

Jika Anda pernah mendapatkan kesalahan serupa saat menggunakan Windows PowerShell, Anda harus mencoba baris perintah sederhana Windows. Saya tidak mengetahui apa yang menyebabkan ini, tetapi PowerShell tampaknya menafsirkan beberapa parameter Maven.


Lihat jawaban S. Bollweber di atas. Dan setidaknya TakeCommand mengungkapkan bahasa yang sama.
Martin

1
Tidak ada alasan untuk meremehkan jawaban saya - S. Bollweber menjawab beberapa bulan setelah saya sendiri.
Koraktor

2

Semua jawaban yang diposting dengan benar membahas ini dari perspektif yang benar-benar ahli. Masalah saya adalah melakukan penginstalan ini untuk maven menggunakan Netbeans sebagai IDE utama saya. Saya menemukan artikel di bawah ini bermanfaat.

Penghargaan untuk artikel forum netbeans berikut: http://forums.netbeans.org/topic22907.html

  1. Dalam proyek Maven, buka dialog "Tambahkan ketergantungan"
  2. Buat beberapa groupId, artifactId dan versinya dan isi mereka, OK.
  3. Ketergantungan akan ditambahkan ke pom.xml dan akan muncul di bawah simpul "Perpustakaan" proyek maven
  4. Klik kanan node Lib dan "instal artefak secara manual", isi jalur ke jar. Jar harus dipasang ke repo Maven lokal dengan koordinat yang dimasukkan pada langkah 2)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.