Maven-2: Как управлять тем, от чего зависит зависимость?

Я знаю, что по умолчанию с зависимостями maven он возьмет все, что ему нужно, из локального репо (каталог .m2). В моем приложении я хочу, чтобы оно зависело не от локального каталога, а от определенного места. Я использовал <scope>system</scope> с <systemPath>../path/to/file/</systemPath>, но это все еще зависит от каталога .m2. Могу ли я в любом случае изменить, от чего зависят зависимости maven?

В моем приложении я использую собственный код (C++) и файлы .nar и .so. В этом примере мне особенно нужно зависеть от файла .so в определенном каталоге, но он всегда идет в каталог .m2. Есть ли плагин, который может это исправить?

Кроме того, обратите внимание, что я использую Maven 2.2.1.


person Rob Avery IV    schedule 01.02.2013    source источник


Ответы (1)


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

Использование файла установки для установки этого конкретного файла в локальный репозиторий в качестве артефакт, указав идентификатор группы, идентификатор артефакта и версию

mvn install:install-file...

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

person khmarbaise    schedule 01.02.2013
comment
Нет способа перезаписать каталог зависимостей из локального репо на пользовательский путь? - person Rob Avery IV; 01.02.2013
comment
@Rob, есть способ установить каталог репо, но maven просто загрузит все зависимости в это новое место. Если у вас есть зависимость, которая обычно недоступна через maven Central, вы обычно либо устанавливаете ее вручную, как описано, либо даете ей системную область и указываете путь к ней. - person John Haager; 02.02.2013