Skip to main content

Trabalhando com o registro do Apache Maven

Você pode configurar o Apache Maven para publicar pacotes no GitHub Packages e usar pacotes armazenados no GitHub Packages como dependências em um projeto Java.

O GitHub Packages está disponível com GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 ou superior e o GitHub AE.. Para obter mais informações sobre como atualizar sua instância do GitHub Enterprise Server, confira "Sobre atualizações para novas versões" e consulte o Assistente de atualização para encontrar o caminho de atualização da sua versão atual.

Observação: talvez esse tipo de pacote não esteja disponível para sua instância, pois os administradores do site podem habilitar ou desabilitar cada tipo de pacote compatível. Para obter mais informações, confira "Como configurar o suporte a pacotes para sua empresa".

Autenticar-se no GitHub Packages

Você precisa de um token de acesso para publicar, instalar e excluir pacotes.

Você pode usar um PAT (token de acesso pessoal) para se autenticar no GitHub Packages ou na API do GitHub Enterprise Server. Ao criar um token de acesso pessoal, você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre escopos relacionados a pacotes para um PAT, confira "Sobre as permissões para pacotes do GitHub".

Para efetuar a autenticação em um registro do GitHub Packages dentro de um fluxo de trabalho de GitHub Actions, você pode utilizar:

  • GITHUB_TOKEN para publicar pacotes associados ao repositório do fluxo de trabalho.
  • um PAT para instalar pacotes associados a outros repositórios privados (que não podem ser acessados pelo GITHUB_TOKEN).

Para obter mais informações sobre o GITHUB_TOKEN usado em fluxos de trabalho do GitHub Actions, confira "Autenticação em um fluxo de trabalho".

Efetuando a autenticação com um token de acesso pessoal

Você deve usar um token de acesso pessoal com os escopos apropriados para publicar e instalar pacotes no GitHub Packages. Para obter mais informações, confira "Sobre o GitHub Packages".

Autentique-se no GitHub Packages com o Apache Maven editando o arquivo ~/.m2/settings.xml para incluir seu token de acesso pessoal. Crie um arquivo ~/.m2/settings.xml se não houver.

Na tag servers, adicione uma tag filho server com uma id, substituindo USERNAME pelo nome de usuário do GitHub e TOKEN pelo seu token de acesso pessoal.

Na tag repositories, configure um repositório mapeando a id do repositório para a id adicionada à tag server que contém suas credenciais. Substitua HOSTNAME pelo nome do host do your GitHub Enterprise Server instance e OWNER pelo nome da conta de usuário ou de organização que é o proprietário do repositório. Como não é permitido usar letras maiúsculas, é preciso usar letras minúsculas no nome do proprietário do repositório, mesmo que o nome do usuário ou da organização no GitHub contenha letras maiúsculas.

Caso deseje interagir com vários repositórios, adicione cada repositório para separar os filhos do repository na tag repositories, mapeando a id de cada um para as credenciais contidas na marca servers.

O GitHub Packages dá suporte às versões de SNAPSHOT do Apache Maven. Para usar o repositório do GitHub Packages para baixar artefatos SNAPSHOT, habilite SNAPSHOTS no POM do projeto de consumo ou no arquivo ~/.m2/settings.xml.

Se a sua instância tiver o isolamento de subdomínio habilitado:

<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.HOSTNAME/OWNER/REPOSITORY</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>
  </servers>
</settings>

Se a sua instância tiver o isolamento de subdomínio desabilitado:

<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>HOSTNAME/_registry/maven/OWNER/REPOSITORY</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>
  </servers>
</settings>

Publicando um pacote

Por padrão, o GitHub publica o pacote em um repositório existente com o mesmo nome do pacote. Por exemplo, o GitHub publicará um pacote chamado com.example:test em um repositório chamado OWNER/test.

Caso deseje publicar vários pacotes no mesmo repositório, inclua a URL do repositório no elemento <distributionManagement> do arquivo pom.xml. O GitHub fará a correspondência do repositório com base nesse campo. Como o nome do repositório também faz parte do elemento distributionManagement, não há etapas adicionais para publicar vários pacotes no mesmo repositório.

Para obter mais informações sobre como criar um pacote, confira a documentação do maven.apache.org.

  1. Edite o elemento distributionManagement do arquivo pom.xml localizado no diretório do pacote, substituindo HOSTNAME pelo nome do host do your GitHub Enterprise Server instance, OWNER pelo nome da conta de usuário ou de organização que é o proprietário do repositório e REPOSITORY pelo nome do repositório que contém o projeto.

    Se sua instância tiver o isolamento de subdomínio habilitado:

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://maven.HOSTNAME/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    

    If your instance has subdomain isolation disabled:

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://HOSTNAME/_registry/maven/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    
  2. Publish the package.

    $ mvn deploy

Após publicar um pacote, você poderá visualizá-lo no GitHub. Para obter mais informações, confira "Como ver pacotes".

Instalando um pacote

Para instalar um pacote do Apache Maven por meio do GitHub Packages, edite o arquivo pom.xml para incluir o pacote como uma dependência. Caso deseje instalar pacotes de mais de um repositório, adicione uma tag repository a cada um. Para obter mais informações sobre como usar um arquivo pom.xml no seu projeto, confira "Introdução ao POM" na documentação do Apache Maven.

  1. Autenticar para GitHub Packages. Para obter mais informações, confira "Autenticação no GitHub Packages".

  2. Adicione as dependências do pacote ao elemento dependencies do arquivo pom.xml do projeto, substituindo com.example:test pelo pacote.

    <dependencies>
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0-SNAPSHOT</version>
      </dependency>
    </dependencies>
    
  3. Instale o pacote.

    $ mvn install

Leitura adicional