Репозитории
Репозитории — это место, где хранятся артефакты: jar файлы, pom файлы, javadoc, исходники. Существуют:
- Локальный репозиторий
- Центральный репозиторий
- Внутренний «Корпоративный» репозиторий
1. Локальный репозиторий
Локальный репозиторий по умолчанию расположен в /.m2/repository — персональный для каждого пользователя. Здесь лежат артефакты, которые были скачаны из центрального репозитория либо добавлены другим способом. Например, если вы наберёте команду
mvn install
в текущем проекте, то соберётся jar (или war, pom в зависимости от содержимого тега packaging), который установится в локальный репозиторий.
2. Центральный репозиторий
Чтобы самому каждый раз не создавать репозиторий, сообщество для Вас поддерживает центральный репозиторий. Если для сборки вашего проекта не хватает зависимостей, то они по умолчанию автоматически скачиваются с http://repo1.maven.org/maven2. В этом репозитории лежат практически все опенсорсные фреймворки и библиотеки.
Самому в центральный репозиторий положить нельзя. Т.к. этот репозиторий используют все, то перед тем как туда попадают артефакты, они проверяются, тем более что если артефакт однажды попал в репозиторий, то по правилам изменить его нельзя.
Для поиска нужной библиотеки очень удобно пользоваться сайтами http://mavenrepository.com/ и http://findjar.com/.
3. Корпоративный репозиторий
Если вы хотите создать свой репозиторий, содержимое которого вы можете полностью контролировать (как локальный), и сделать так, чтобы он был доступен для нескольких человек, вам будет полезен корпоративный репозиторий. Доступ к артефактам можно ограничивать настройками безопасности сервера так, что код ваших проектов не будет доступен извне.
Чтобы добавить репозиторий в список, откуда будут скачиваться зависимости, нужно добавить секцию repositories в pom.xml.
- Преимущества и недостатки Maven
- Установка Maven
- Maven — жизненный цикл сборки
- Файл pom.xml
- Плагины Maven
- Задания
Добавление библиотеки в локальный репозиторий Maven на примере
Задача
Так как библиотека GXT версии 2.2.5 не существует в центральном репозитории Maven, то необходимо вручную добавить эту библиотеку в локальный репозиторий Решение
Необходимо скачать библиотеку с сайта разработчика. Полученную библиотеку распаковываем на диск и переходим в папку в которую распаковали библиотеку. Например, в нашем примере это будет C:\gxt-2.2.5 Далее необходимо выполнить цель install-file в Maven плагине install. При этом следует указать все координаты добавляемой в репозиторий библиотеки в качестве параметров командной строки
mvn install:install-file -Dfile=gxt-2.2.5-gwt22.jar -DgroupId=com.extjs -DartifactId=gxt -Dversion=2.2.5 -Dpackaging=jar -Dfile - имя добавляемого файла; -DgroupId - идентификатор группы устанавливаемой библиотеки; -DartifactId - имя устанавливаемой библиотеки; -Dversion - номер версии устанавливаемой библиотеки; -Dpackaging - тип файла устанавливаемой библиотеки;
В случае библиотеки gxt-2.2.5 мы имеем несколько вариантов библиотеки в зависимости от версии используемого фреймворка Google Web Toolkit (GWT):
gxt-2.2.5-gwt17 - для версии GWT 1.7; gxt-2.2.5-gwt22 для версии GWT 2; gxt-2.2.5-gwt22 для версии GWT 2.2 и выше.
Поэтому при необходимости установить все версии библиотеки в локальный репозиторий следует так же указать параметр -Dclassifier, который определяет дополнительную классификацию устанавливаемой библиотеки. В этом случае необходимо будет выполнить установку в локальный репозиторий всех трех версий библиотеки GXT с указание соответствующего классификатора
mvn install:install-file -Dfile=gxt-2.2.5-gwt17.jar -DgroupId=com.extjs -DartifactId=gxt -Dclassifier=gwt17 -Dversion=2.2.5 -Dpackaging=jar mvn install:install-file -Dfile=gxt-2.2.5-gwt2.jar -DgroupId=com.extjs -DartifactId=gxt -Dclassifier=gwt2 -Dversion=2.2.5 -Dpackaging=jar mvn install:install-file -Dfile=gxt-2.2.5-gwt22.jar -DgroupId=com.extjs -DartifactId=gxt -Dclassifier=gwt22 -Dversion=2.2.5 -Dpackaging=jar
Как импортировать библиотеку в java
Для импорта библиотеки необходимо использовать ключевое слово import после которого указать имя библиотеки. Если библиотека сторонняя, то надо подключить ее, указав зависимость в файле build.gradle . Ниже пример подключения популярной библиотеки Apache StringUtils :
dependencies implementation 'org.apache.commons:commons-lang3:3.12.0' >
import org.apache.commons.lang3.StringUtils; public class App public static void main(String[] args) String str = StringUtils.reverse("123"); System.out.println(str); // => 321 > >
Как загрузить библиотеку java в репозиторий
Для загрузки библиотеки Java в репозиторий Gradle на GitHub можно использовать следующие шаги:
1 Создайте новый репозиторий на GitHub
2 Создайте новый проект Gradle в вашей IDE или в командной строке.
3 Откройте файл build.gradle и добавьте следующий код:
plugins id 'java' id 'maven-publish' > group = 'com.example' version = '1.0-SNAPSHOT' repositories mavenCentral() > dependencies // добавьте зависимости вашего проекта > publishing publications maven(MavenPublication) groupId group artifactId 'library-name' version version from components.java > > repositories maven name = "GitHubPackages" url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY") credentials username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") > > > >
- В этом коде мы указываем, что проект использует плагин Java и плагин Maven Publish для публикации библиотеки.
- Мы также указываем группу, версию и зависимости проекта.
- Затем мы настраиваем публикацию библиотеки в репозиторий Maven , указывая имя группы, артефакт и версию.
- Наконец, мы настраиваем репозиторий для публикации библиотеки, используя учетные данные для доступа к GitHub Packages
4 Запустите команду gradlew publish в командной строке или в вашей IDE.
Библиотека будет опубликована в ваш репозиторий на GitHub в качестве пакета Maven
Обратите внимание, что для публикации библиотеки в репозиторий GitHub требуется наличие учетной записи GitHub с подпиской на GitHub Packages . Кроме того, вы должны настроить учетные данные для доступа к GitHub Packages , как показано в приведенном выше коде.