установить все банки в папку с помощью maven-install-plugin

У меня есть папка lib в моем проекте с некоторыми внешними банками. Я использую maven-install-plugin, чтобы добавить эти банки в свой локальный репозиторий. Однако мне нужно создать отдельную конфигурацию для каждой устанавливаемой банки. Есть ли способ, с помощью которого я могу скопировать все банки в папке lib в локальный репозиторий.


person Anand B    schedule 24.08.2012    source источник


Ответы (2)


Вариант первый

Если содержимое каталога lib соответствует структуре каталогов в репозитории maven, то есть:

/lib/{groupid1}/{groupid2}/{artifactid}/{version}/{artifactid}-{version}.jar

Например:

/lib/commons-lang/commons-lang/2.6/commons-lang-2.6.jar 

вы можете просто скопировать весь каталог в свой каталог ~/.m2/repository

cp -R lib/*  ~/.m2/repository

Если нет, то вам придется устанавливать их по одному вручную, потому что у Maven нет возможности определить идентификатор группы исключительно по имени файла.

Вариант второй

Другим вариантом было бы вообще не помещать их в локальный репозиторий и вместо этого указывать systemPath в ваших тегах dependency в вашем pom.xml.

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.0.4</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/commons-logging-1.0.4.jar</systemPath>
</dependency>
person theon    schedule 24.08.2012
comment
Предположим, что содержимое каталога lib соответствует структуре папок в репозитории maven, есть ли какой-либо плагин для копирования - person Anand B; 24.08.2012
comment
Вы не уверены :D Вот более подробная информация: cwiki. apache.org/confluence/display/MAVENOLD/ . Может быть, вы могли бы опубликовать содержимое вашего каталога lib? - person theon; 24.08.2012
comment
Я также добавил в свой ответ еще один вариант, который не требует копирования зависимостей в ваше локальное репо. - person theon; 24.08.2012

Вам нужно указать, в частности, идентификатор группы, идентификатор артефакта и версию этого файла, потому что это координаты Maven, чтобы различать артефакты в Maven. Если у вас есть папка lib, лучше начните использовать менеджер репозитория и установите их в менеджер репозитория один раз, после чего вы сможете использовать их как обычные зависимости.

person khmarbaise    schedule 24.08.2012