Avatar ·

Как добавить локальный JAR-файл в Maven проект (ручная установка)

Всем привет! Я новичок в Java и Maven, и у меня возникла проблема. У меня есть сторонняя библиотека в виде JAR-файла (например, `my-custom-lib.jar`), который не опубликован в центральном репозитории Maven. Я скачал его с сайта разработчика и положил в папку `lib` внутри моего проекта. Как правильно указать в `pom.xml`, чтобы Maven использовал этот локальный JAR при сборке? Я пробовал прописать зависимость, но Maven всё равно пытается скачать её из интернета и выдаёт ошибку, что не может найти артефакт. Вот мой текущий `pom.xml` (кусок с зависимостями): ```xml com.example my-custom-lib 1.0.0 ``` Но я не указал, где лежит сам файл. Как быть? Нужно ли менять `pom.xml` или использовать какую-то команду? Заранее спасибо за помощь! <<>>

Способ 1: Установка JAR в локальный репозиторий через Maven (рекомендуемый)

Самый правильный и поддерживаемый способ — установить JAR в ваш локальный Maven-репозиторий (~/.m2/repository) с помощью команды mvn install:install-file. После этого Maven будет видеть библиотеку как обычную зависимость.

Шаг 1. Выполните команду в терминале:

mvn install:install-file -Dfile=путь/к/вашему/my-custom-lib.jar -DgroupId=com.example -DartifactId=my-custom-lib -Dversion=1.0.0 -Dpackaging=jar

Замените путь/к/вашему/ на реальный путь к JAR-файлу. Например, если файл лежит в папке lib внутри проекта, команда будет:

mvn install:install-file -Dfile=lib/my-custom-lib.jar -DgroupId=com.example -DartifactId=my-custom-lib -Dversion=1.0.0 -Dpackaging=jar

Шаг 2. После установки вы можете использовать зависимость в pom.xml как обычно:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>my-custom-lib</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

Преимущества:

  • Не нужно хранить JAR в проекте (можно удалить из папки lib).
  • Работает с любыми IDE (IntelliJ IDEA, Eclipse, VS Code).
  • Подходит для CI/CD — достаточно один раз выполнить команду на сервере сборки.
  • Поддерживает управление версиями: можно установить несколько версий одной библиотеки.

Важно: Если вы используете систему контроля версий (Git), локальный репозиторий ~/.m2 обычно не коммитится. Каждый разработчик должен выполнить эту команду самостоятельно.

<<>>

Способ 2: Указание systemPath в pom.xml (быстрый, но не рекомендуется)

Если вам нужно срочно подключить JAR без установки в локальный репозиторий, можно указать путь напрямую в pom.xml. Однако этот способ считается костылём и не рекомендуется для серьёзных проектов.

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>my-custom-lib</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/my-custom-lib.jar</systemPath>
    </dependency>
</dependencies>

Минусы:

  • JAR должен физически лежать в проекте (засоряет репозиторий).
  • Не работает с Maven-плагинами, которые генерируют classpath (например, Spring Boot).
  • При переносе проекта на другой компьютер или в CI нужно вручную таскать JAR.

Когда использовать: Только для быстрых экспериментов или если библиотека не должна переиспользоваться в других проектах. В продакшене всегда используйте mvn install:install-file или публикуйте JAR в корпоративный репозиторий (Nexus/Artifactory).