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


96

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

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

Есть ли ошибка в моей команде?


Какой у этого статус? Ваш вопрос решен?
Мэтт

Ответы:


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. В последнем случае вид упаковки берется из пом.
Romain Linsolas

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 предоставить вам более подробную информацию о расположении файлов Sun jar и как добавить репозиторий 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. Мои проблемы заключались в выполнении этой установки для maven с использованием Netbeans в качестве моей основной IDE. Я нашел приведенную ниже статью полезной.

Обратите внимание на следующую статью форума netbeans: http://forums.netbeans.org/topic22907.html

  1. В проекте Maven откройте диалог «Добавить зависимость».
  2. Составьте несколько groupId, artifactId и version и заполните их, ОК.
  3. Зависимость будет добавлена ​​в pom.xml и появится в узле «Библиотеки» проекта maven.
  4. Щелкните правой кнопкой мыши узел Lib и «установить артефакт вручную», укажите путь к банке. Jar должен быть установлен в локальное репозиторий Maven с координатами, введенными на шаге 2)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.