Maven: как использовать локальный каталог lib для зависимостей вместо репозиториев maven

Структура моего проекта, как показано ниже, во время интеграционного теста.

 Project-A
    |_conf (contains the configuration files)
    |_lib  (Contains the all dependencies)
    |_pom.xml
    |_target
        |_test (Contains the integration tests)

Когда я запускаю приведенную ниже команду maven, она загружает зависимости из nexus и указывает на локальные репозитории вместо каталога lib.

Как сообщить maven проверить папку lib на наличие зависимостей вместо локального репозитория maven?

Примечание. lib содержит все зависимости, необходимые для тестирования проекта.

    mvn surefire:test

person sree1611    schedule 11.01.2019    source источник
comment
Вы можете определить такие вещи через файл settings.xml, расположенный в ~/.m2/settings.xml   -  person raphael_mav    schedule 11.01.2019
comment
lib содержит только файлы jar. это не репозиторий maven. Не содержит структуру папок groupid.   -  person sree1611    schedule 11.01.2019
comment
Начните использовать диспетчер репозитория и разверните jar-файлы lib в диспетчере репозитория или используйте зависимости по умолчанию... это делает жизнь проще и намного удобнее... использование каталога lib - это действительно плохо, за исключением того, что это означает фиксацию файлов jar. в контроль версий, где они не принадлежат...   -  person khmarbaise    schedule 12.01.2019
comment
Ваша установка - просто плохая идея. Сначала каталог conf? Файлы конфигурации (обычно называемые ресурсами) должны быть помещены в src/main/resources, если они будут упакованы в результирующий файл jar. Если они нужны только для тестов, их следует поместить в /src/test/resources.   -  person khmarbaise    schedule 12.01.2019
comment
@khmarbaise, я знаю, что это плохая идея, но это устаревшее приложение. Мы не можем изменить структуру проекта   -  person sree1611    schedule 12.01.2019


Ответы (1)


Если вы хотите использовать зависимость, которой нет в репозитории maven, вы можете поместить эти банки в проект (в каталог lib вашего случая). И укажите путь к банке, как показано ниже.

<dependency>
            <groupId>anything</groupId>
            <artifactId>anything</artifactId>
            <version>anything</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/jar_name.jar</systemPath>
</dependency>

Здесь вы можете указать что угодно для groupId, artifactId и version. Эти поля в данном случае просто игнорируются.

person Deepak Kumar    schedule 11.01.2019
comment
Я хочу ссылаться на каталог lib только во время интеграционного теста. Я запускаю это через профиль. - person sree1611; 11.01.2019
comment
Вы можете попробовать с <scope> как test. - person Deepak Kumar; 11.01.2019
comment
Если вы хотите ссылаться на каталог lib во время теста и репозиторий maven во время работы, вам может потребоваться добавить зависимость два раза, указав <scope> один раз как test с <systemPath> и снова с <scope> как runtime. - person Deepak Kumar; 11.01.2019
comment
Есть более 100 банок. Нужно ли делать это для всех? Есть ли возможность указать путь? - person sree1611; 11.01.2019
comment
Такие файлы jar - это файлы jar? Они генерируются другими сборками? Вы должны использовать обычные зависимости, а также, как уже упоминалось, использовать соответствующую область. Кроме того, система прицелов уже давно устарела и будет выдавать ПРЕДУПРЕЖДЕНИЯ... - person khmarbaise; 12.01.2019