Maven установочный файл не будет генерировать pom.xml - PullRequest
7 голосов
/ 08 октября 2009

Я установил некоторые сторонние файлы jar в свой репозиторий с помощью следующей команды:

mvn install:install-file -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar

Однако, после того как я выполнил компиляцию mvn, maven жалуется, что в хранилище нет файла pom, и пытается загрузить его, но не может этого сделать, потому что он не опубликован ни в одном удаленном хранилище.

Вот точное сообщение от 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)

Итак, как мне заставить maven сгенерировать pom-файл для этого jar-файла и поместить его в мой локальный репозиторий?

Ответы [ 4 ]

15 голосов
/ 08 октября 2009

Вы говорите это! : -)

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

(Команда размещена на нескольких строках, чтобы вы могли легко увидеть последний параметр.)

Хорошо, а? В будущем вы можете перейти к документации плагина, просмотреть его цели и все параметры, которые он принимает. Например, цель файла установки .

Edit:

Что касается вопроса о поведении по умолчанию флага generatePom, в документации указывается, что по умолчанию он имеет значение true, и, похоже, код поддерживает это. Однако, используя Maven 2.0.9 с версией 2.2 maven-install-plugin (обе версии немного устарели), он не генерирует POM. Так что, возможно, увеличение версии (й) позволит работать по умолчанию.

> 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

(без сгенерированного POM.)

2 голосов
/ 08 октября 2009

install: install-file goal имеет необязательный параметр generatePom (начиная с версии 2.1), который позволяет:

Создание минимального POM для Артефакт, если ни один не подается через параметр pomFile.
По умолчанию true если в POM нет существующего POM локальный репозиторий пока нет.

Этот параметр по умолчанию равен true, начиная с версии 2.3 false в 2.1, 2.2). Так что если вы используете версию установочного плагина до 2.3, вам нужно будет передать параметр в команде.

На всякий случай, синтаксис для явного использования версии 2.3 плагина установки будет:

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 голосов
/ 15 марта 2012

У меня была та же проблема, что и у вас, у меня был сценарий оболочки, использующий цель install: install-file, например:

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

Несколько вещей на заметку:

artifactId не может содержать '.' ... не знаю почему, но установка не удалась бы, если бы она содержала '.'

Выполнение вышеуказанной команды генерирует pom только с maven 3.x. Добавив следующие аргументы, я смог получить банку для копирования:

-DgeneratePom=true -DupdateReleaseInfo=true
0 голосов
/ 24 октября 2009

Что ж, и если ваша сторонняя библиотека действительно "изящный графический интерфейс", все что вам нужно сделать, это добавить изящный репозиторий maven в ваш pom.xml:

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

и ваш проект Maven автоматически загрузит отличную версию: D

PS: я знаю, что это был не твой вопрос, но он мог бы помочь с отличной интеграцией:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...