Skip to content

Latest commit

 

History

History
236 lines (186 loc) · 7.12 KB

README.ru.md

File metadata and controls

236 lines (186 loc) · 7.12 KB

Apache Maven registry

Github Maven

Вы можете настроить Apache Maven для публикации пакетов в GitHub Packages и их использование в качестве зависимостей в проекте Java.

Генерируем стандартный Maven проект

mvn archetype:generate -DgroupId=example.com -DartifactId=github-maven-package-example -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

mvn validate

mvn clean install

Редактируем pom.xml

Изменяем properties

<properties>  
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  <maven.compiler.source>11</maven.compiler.source>  
  <maven.compiler.target>11</maven.compiler.target>  
  <java.version>11</java.version>  
  
  <github.maven-plugin>0.12</github.maven-plugin>  
  <github.repository.owner>GITHUB_USERNAME</github.repository.owner>  
  <github.repository.name>GITHUB_REPO</github.repository.name>  
</properties>

Заменяем <GITHUB_USERNAME> и <GITHUB_REPO> на реальные данные

Добавляем distributionManagement

<distributionManagement>  
  <repository>  
    <id>github</id>  
    <name>GitHub ${github.repository.owner} Apache Maven Packages</name>  
	<url>https://maven.pkg.github.com/${github.repository.owner}/${github.repository.name}</url>  
  </repository>  
</distributionManagement>

Изменяем build

<build>  
  <pluginManagement>  
    <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-plugin-plugin</artifactId>  
        <version>3.6.0</version>  
        <configuration>  
          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>  
        </configuration>  
      </plugin>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-site-plugin</artifactId>  
        <version>3.9.1</version>  
      </plugin>  
    </plugins>  
  </pluginManagement>  
  <plugins>  
    <plugin>  
      <groupId>org.apache.maven.plugins</groupId>  
      <artifactId>maven-compiler-plugin</artifactId>  
      <version>3.8.1</version>  
      <configuration>  
        <source>${java.version}</source>  
        <target>${java.version}</target>  
      </configuration>  
    </plugin>  
  
    <plugin>  
      <groupId>org.apache.maven.plugins</groupId>  
      <artifactId>maven-release-plugin</artifactId>  
      <version>3.0.0-M1</version>  
    </plugin>  
  </plugins>  
</build>

Добавляем простой класс User

public class User {  
  
    private String username;  
    private String password;  
  
    public User(String username, String password) {  
        this.username = username;  
        this.password = password;  
    }  
    
    public User() {  
    }  
    
    public String getUsername() {  
        return username;  
    }  
    
    public void setUsername(String username) {  
        this.username = username;  
    }  
    
    public String getPassword() {  
        return password;  
    }  
    
    public void setPassword(String password) {  
        this.password = password;  
    }  
    
    @Override  
    public boolean equals(Object o) {  
        if (this == o) return true;  
        if (!(o instanceof User)) return false;  
        User user = (User) o;  
        return getUsername().equals(user.getUsername()) && getPassword().equals(user.getPassword());  
    }  
    
    @Override  
    public int hashCode() {  
        return Objects.hash(getUsername(), getPassword());  
    }  
    
    @Override  
    public String toString() {  
        return "User{" +  
                "username='" + username + '\'' +  
                ", password='" + password + '\'' +  
                '}';  
    }
}

Убедимся, что не ошиблись и установим пакеты

mvn validate

mvn clean install

Подготовка к деплою

Отредактируем файл ~/.m2/settings.xml чтобы доказать Github серьёзность своих намериний)

vim ~/.m2/settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <activeProfiles>
    <activeProfile>github</activeProfile>
  </activeProfiles>

  <profiles>
    <profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
          <id>github</id>
          <url>https://maven.pkg.github.com/<GITHUB_USERNAME>/<GITHUB_REPO></url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username><GITHUB_USERNAME></username>
      <password><GITHUB_ACCESS_TOKEN></password>
    </server>
  </servers>
</settings>

Заменяем <GITHUB_USERNAME>, <GITHUB_REPO> и <GITHUB_ACCESS_TOKEN>
Вам нужен токен доступа с правами: publish, install, and delete private, internal, and public packages

Деплой

Тут всё просто:

mvn deploy

Результат

В своём репозитории вы можете найти такую прелесть:

<dependency>  
  <groupId>example.com</groupId>  
  <artifactId>github-maven-package-example</artifactId>  
  <version>1.0-SNAPSHOT</version>  
</dependency>

Если репозиторий публичный, то зависимость доступна всем!

Но если вы это делали в приватном, то на устройстве, где вы будете использовать эту зависимость потребуется настроить такой же ~/.m2/settings.xml файл.

Удачи !)

Другие ресурсы

  • Boilerplates - Шаблоны разных проектов
  • Cheat-Sheets - Справочник по различным инструментам и технологиям
  • Habr - Здесь я иногда пишу о чем-то интересном

Contact

Created by Gurianov Mark - feel free to contact me!

+7(962)024-50-04 | [email protected] | github

Readme Card