maven: как указать «systemPath» для зависимых установленных локально? - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть один проект myPackage maven, скомпилированный и установленный в локальный репозиторий maven в

~/.m2/repository/mygroup/myPackage/1.0-SNAPSHOT/myPackage-1.0-SNAPSHOT.jar

В другом проекте maven я хочу использовать его, и в pom.xml я пишу <dependency> раздел для него. Но я не знаю, как написать "systemPath" для этой банки:

  1. Я не могу использовать "~" для указания пути, потому что "~" является расширением * nix, java / maven не может его распознать.

  2. Я не могу жестко кодировать как

    /home/myself/.m2/...
    

    Это не портативный.

  3. Я не могу использовать $ {project.basedir}, потому что эти 2 проекта maven находятся в разных папках. Но я предполагаю, что должны быть некоторые другие переменные среды maven, которые могли бы указывать на «домашний каталог»?

Все, что я хочу сделать, это сделать этот "systemPath".

--------------- Проблема решена путем использования другого проекта в качестве зависимости ------------

<systemPath>${project.basedir}/../myPackage/pom.xml</systemPath>

Это работает!

1 Ответ

0 голосов
/ 11 ноября 2018

Системный путь требуется, если библиотека, от которой зависит ваш проект, отсутствует в локальном репозитории maven.

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

Теперь зависимость находится в локальном репозитории, если:

  • Он был загружен из некоторого удаленного хранилища (обычно)

  • Вы установили его локально (в данном случае он находится в вашем локальном хранилище, но может отсутствовать в вашем репозитории)

Чтобы установить зависимость в локальном репо, используйте: mvn install:install-file + параметры, как написано здесь

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

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