Як вручну встановити артефакт у Maven 2?


96

Я зіткнувся з деякими помилками, коли намагався встановити артефакт вручну за допомогою Maven 2. Я хотів встановити jar з локального каталогу за допомогою команди

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

Але Maven дав помилку збірки, яка звучить так:

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

Чи є помилка з моєю командою?


Який статус цього? Ви вирішили питання?
Matt

Відповіді:


147

Вам потрібно вказати groupId, artifactId та версію вашого артефакту:

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 або подібне відсутнє
kaboom

@kaboom Ні! За замовчуванням упаковка є jar, тому вам не потрібно вказувати це в цій команді ...
Ромен Лінсолас

5
@romaintaz kaboom правильний; вам потрібно -Dpackaging = jar (або будь-який тип), інакше ви отримаєте повідомлення про те, що "відсутня упаковка". "
Джек Едмондс

3
Здається, параметр упаковки потрібен, крім випадків, якщо ви надаєте файл pom. В останньому випадку тип упаковки береться з пом.
Ромен Лінсолас

1
Якщо ви використовуєте PowerShell, переконайтеся, що ви також використовуєте цитату"-DgroupId=javax.transaction"
ankitjaininfo

38

Згідно з Посібником maven щодо встановлення сторонніх JAR , команда така:

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

Вам дійсно потрібен варіант упаковки. Це відповідає на вихідне запитання.

Зараз у вашому контексті ви боретеся з банкою, наданою Sun. Вам також слід прочитати сторінку Coping with Sun JARs . Там ви дізнаєтесь, як допомогти maven надати вам кращу інформацію про розташування банок від сонця та як додати сховище Java.net Maven 2, яке містить jta-1.0.1B.jar . Додайте це у свій settings.xml(не портативний) або pom.xml (портативний):

  <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

Мені довелося додати упаковку, тому:

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

У мене було багато проблем із встановленням файлу jar вручну, і він продовжував невдало, доки я не набрав його саме так. Тепер це працює!
gregturn


4

Якщо ви коли-небудь отримували подібні помилки під час використання Windows PowerShell, спробуйте простий командний рядок Windows. Я не дізнався, що це спричинило, але PowerShell, схоже, інтерпретує деякі параметри Maven.


Подивіться на відповідь С. Болвебера вище. І принаймні TakeCommand висловлює те саме поведінку.
Мартін

1
Немає причин голосувати проти моєї відповіді - С. Болвебер відповів кілька місяців після мене.
Koraktor

2

Усі розміщені відповіді по праву обговорюють це з суворо розмитої точки зору. Мої проблеми полягали у виконанні цієї установки для maven з використанням Netbeans як моєї основної IDE. Я знайшов нижченаведену статтю корисною.

Заслуговує на увагу наступна стаття форуму netbeans: http://forums.netbeans.org/topic22907.html

  1. У проекті Maven відкрийте діалогове вікно "Додати залежність"
  2. Складіть груповий ідентифікатор, артефактний і версію та заповніть їх, гаразд.
  3. Залежність буде додана до pom.xml і з’явиться у вузлі "Бібліотеки" проекту maven
  4. Клацніть правою кнопкою миші вузол Lib і "встановити артефакт вручну", заповніть шлях до банки. Jar слід встановити до локального репозиторію Maven з координатами, введеними в кроці 2)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.