Создание проектов с Maven в автономном режиме без использования репозитория M2, но с использованием системных jar-файлов - PullRequest
1 голос
/ 28 марта 2011

У меня есть требование для проекта в операционной системе с открытым исходным кодом, чтобы использовать Maven полностью автономно в среде nix. то есть он должен использовать зависимости, доступные в системе (вероятно, в / usr / share / + несколько других мест?). Maven не должен загружать какую-либо зависимость из Интернета.

Есть ли решение для достижения этой цели? Создание репозитория M2 в системе не является жизнеспособным решением. Проблема в том, что файловая система доступна только для чтения. Мы можем работать только с временной папкой (например, / tmp) с доступом для записи. Но поддержание репо во временном местоположении - плохой дизайн, не так ли? Другими словами, новый проект Maven, который будет установлен, должен использовать существующие пакеты в системе, если они доступны. Если пакеты не существуют, они должны быть установлены отдельно (через менеджер пакетов) и не должны копироваться в репозиторий m2.

Есть ли какой-нибудь известный способ сделать это?

Спасибо за помощь!

PS: Обратите внимание, что я не спрашиваю о опции -o, чтобы отключить его!

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Вы можете создать свой собственный "зеркальный" репозиторий (зеркало реального репозитория Maven в / tmp) и попросить Maven использовать его вместо удаленного репозитория.

Пример:

http://maven.apache.org/guides/mini/guide-mirror-settings.html

0 голосов
/ 21 августа 2011

Подход, который мы использовали, заключается в следующем.Мы решили сохранить хранилище m2 в / usr / share / maven-2 / maven_home / m2_repo /.Это не временная папка и требует прав администратора для записи.Но это не проблема, так как для установки пакетов также требуются права администратора.

Мы сделали символьные ссылки в репозитории, чтобы указать на файлы системного уровня.то есть мы сохранили структуру репозитория maven, но банки были символически привязаны к системным банкам.Это означает, что нет ненужного дублирования и растраты пространства.Мы до сих пор храним файлы pom в репо.Файлы pom были переписаны скриптом python, чтобы соответствовать нашим потребностям.Далее, мы ссылались на зависимости с system scope .Например,

<dependency>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>666</version>
  <scope>system</scope>
  <systemPath>/usr/share/maven-core/lib/maven-core.jar</systemPath>
</dependency>

С системной областью не имеет значения, что такое сочетание groupId: artifactId: version.Он просто выбирает банку, которую находит в <systemPath>

0 голосов
/ 28 марта 2011

Я думаю, что вы можете создать локальный репозиторий maven (с правильным деревом папок и pom-файлами), но использовать символьные ссылки на jar-файлы в вашей директории только для записи. Конечно, это решение не проще, чем подход Шамита Вермы, и вы должны написать некоторый код.

...