Esta versão do GitHub Enterprise foi descontinuada em 2021-09-23. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

Trabalhando com o registro do Apache Maven

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

GitHub Package Registry está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server e GitHub AE.

Observação: GitHub Package Registry está atualmente em beta para GitHub Enterprise Server 2.22. Para participar da versão beta de sua instância do GitHub Enterprise Server, use o formulário de inscrição.

Note: When installing or publishing a docker image, GitHub Package Registry does not currently support foreign layers, such as Windows images.

Autenticar-se no GitHub Package Registry

Você precisa de um token de acesso para publicar, instalar e excluir pacotes no GitHub Package Registry.

Você pode usar um token de acesso pessoal (PAT) para efetuar a autenticação em GitHub Package Registry ou na API de GitHub Ao criar um token de acesso pessoal, você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre os escopos dos pacotes para um PAT, consulte "Sobre permissões para o GitHub Packages."

Para efetuar a autenticação em um registro do GitHub Package Registry 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 o GITHUB_TOKEN não consegue acessar).

Para obter mais informações sobre GITHUB_TOKEN usado nos fluxos de trabalho de GitHub Actions, consulteAutenticaçã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 Package Registry. Para obter mais informações, consulte "Sobre GitHub Package Registry."

Você pode efetuar a autenticação no GitHub Package Registry com o Apache Maven editando seu arquivo ~/.m2/settings.xml para incluir seu token de acesso pessoal. Criar um novo arquivo ~/.m2/settings.xml, caso não exista um.

Na etiqueta servidores, adicione uma etiqueta servidor secundário com um Id, substituindo USERNAME pelo o seu nome de usuário GitHub e Token pelo seu token de acesso pessoal.

Na etiqueta repositórios, configure um repositório mapeando o id do repositório com o id que você adicionou na etiqueta servidor que contém as suas credenciais. Substitua HOSTNAME pelo nome do host de sua instância do GitHub Enterprise Server e OWNER pelo nome do usuário ou conta de organização proprietária 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.

Se desejar interagir com vários repositórios, você poderá adicionar cada repositório para separar os repositório secundários na etiqueta repositórios, mapeando o ID de cada um com as credenciais na etiqueta servidores.

GitHub Package Registry suporta versões SNAPSHOT do Apache Maven. Para usar o repositório GitHub Package Registry para fazer o download dos artefatos SNAPSHOT, habilite os INSTANTÂNEOS no POM do projeto que consome ou seu arquivo ~/. 2/settings.xml.

Se sua instância tem 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/*</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 sua instância tem 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/*</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

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

Publicar um pacote

O 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 denominado com.example:test em um repositório denominadoOWNER/test.

Caso queira publicar vários pacotes no mesmo repositório, você poderá incluir a URL do repositório no <distributionManagement> elemento 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, consulte a documentação maven.apache.org.

  1. Edite o elemento distributionManagement do arquivo pom.xml localizado no diretório do pacote, substituindo HOSTNAME* pelo nome de host de sua instância do GitHub Enterprise Server, OWNER pelo nome da conta do usuário ou organização que possui o repositório e REPOSITORY pelo nome do repositório que contém o seu 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. Publique o pacote.

    $ mvn deploy

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

Instalar um pacote

Para instalar um pacote de Apache Maven a partir do GitHub Package Registry, edite o arquivo pom.xml para incluir o pacote como uma dependência. Se você desejar instalar pacotes de mais de um repositório, adicione uma etiqueta de repositório para cada um. Para obter mais informações sobre como usar o arquivo pom.xml no seu projeto, consulte "Introdução a POM" na documentação do Apache Maven.

  1. Autenticar para GitHub Package Registry. Para obter mais informações, consulte "Authenticating to GitHub Package Registry."

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

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

    $ mvn install

Leia mais