Faça a gestão de pacotes Java

Esta página descreve como adicionar, ver e eliminar pacotes Java.

Se quiser usar o sbt como uma ferramenta de compilação para Scala e Java em vez de usar o Maven ou o Gradle, existe um plug-in sbt criado pela comunidade disponível. Esta documentação não descreve a configuração nem a utilização de clientes Scala.

Antes de começar

  1. Se o repositório de destino não existir, crie um novo repositório.
  2. Verifique se tem as autorizações necessárias para o repositório.
  3. Confirme que configurou a autenticação. Se estiver a usar um token de acesso, certifique-se de que atualiza o token antes de se ligar ao repositório.
  4. (Opcional) Configure as predefinições para os comandos gcloud.

Funções necessárias

Para receber as autorizações de que precisa para gerir pacotes, peça ao seu administrador para lhe conceder as seguintes funções do IAM no repositório:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Adicionar pacotes

Modos de repositório: padrão

Para adicionar pacotes ao repositório:

Maven

Use mvn deploy e mvn release para adicionar pacotes ao repositório.

Para implementar com êxito um projeto Maven que referencie um elemento principal, o projeto tem de incluir o fornecedor do Wagon do Artifact Registry num ficheiro de extensões principais, conforme descrito nas instruções de autenticação.

Use mvn deploy:deploy-file para carregar artefactos criados fora do Maven.

Por exemplo, este comando de exemplo implementa example/external.jar e o respetivo ficheiro de projeto example/pom.xml no repositório us-central1-maven.pkg.dev/my-project/my-repo

mvn deploy:deploy-file \
-Durl=artifactregistry://us-central1-maven.pkg.dev/my-project/my-repo \
-DpomFile=example/pom.xml -Dfile=example/external.jar

Para configurar a integração com o Cloud Build, consulte o artigo Integrar com o Cloud Build.

Gradle

Para publicar com êxito no repositório, o seu ficheiro build.gradle tem de incluir uma secção publications que defina os ficheiros a carregar.

Use o comando gradle publish para carregar um pacote para o repositório.

Visualizar pacotes e versões

Modos de repositório: padrão, remoto

Para ver pacotes e versões de pacotes através da Google Cloud consola ou da gcloud:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Clique num pacote para ver as versões do pacote.

gcloud

Para listar os pacotes num repositório, execute o seguinte comando:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Substitua o seguinte:

  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

Para ver as versões de um pacote, execute o seguinte comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Substitua o seguinte:

  • PACKAGE é o ID do pacote ou o identificador totalmente qualificado do pacote.
  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

Para repositórios remotos, a lista devolvida deve incluir todas as dependências diretas e transitivas.

Listar ficheiros

Modos de repositório: padrão, remoto

Pode listar ficheiros num repositório, ficheiros em todas as versões de um pacote especificado ou ficheiros numa versão específica de um pacote.

Para todos os comandos seguintes, pode definir um número máximo de ficheiros a devolver adicionando a flag --limit ao comando.

Para listar todos os ficheiros no projeto, repositório e localização predefinidos quando os valores predefinidos estão configurados:

gcloud artifacts files list

Para listar ficheiros num projeto, num repositório e numa localização especificados, execute o comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Para listar ficheiros de todas as versões de um pacote específico:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Para listar ficheiros de uma versão específica de um pacote:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Substitua os seguintes valores:

  • LOCATION: a localização regional ou multirregional do repositório.
  • PROJECT: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:), consulte o artigo Projetos com âmbito de domínio.
  • REPOSITORY: o nome do repositório onde a imagem está armazenada.
  • PACKAGE: o nome do pacote.
  • VERSION: a versão do pacote.

Exemplos

Considere as seguintes informações do pacote:

  • Projeto: my-project
  • Repositório: my-repo
  • Localização do repositório: us-west1
  • Pacote: my-app

O comando seguinte lista todos os ficheiros no repositório my-repo na localização us-west1 no projeto predefinido:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
O seguinte comando lista os ficheiros na versão 1.0 do pacote.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

A transferir pacotes

Modos de repositório: padrão, remoto e virtual

Para transferir um artefacto como parte da sua compilação, declara o artefacto como uma dependência.

Maven

  1. Declare os pacotes que quer transferir no ficheiro pom.xml do projeto. O exemplo seguinte declara a versão 1.0 do pacote artifact como uma dependência.

    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>artifact</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    

    Para saber mais sobre as dependências do Maven, consulte a introdução às dependências e a referência de dependências do Maven.

  2. Crie o projeto Java.

    mvn compile
    

Gradle

  1. Declare os pacotes que quer transferir no ficheiro build.gradle do projeto. O exemplo seguinte declara a versão 1.0 do pacote artifact como uma dependência de compilação externa.

    Para saber mais sobre as dependências do Gradle, consulte a documentação do Gradle.

    dependencies {
        compile group: 'group', name: 'artifact', version: '1.0'
    }
    
  2. Crie o projeto Java.

    gradle build
    

Para repositórios padrão, transfere um pacote diretamente do repositório.

Para um repositório remoto, transfere uma cópia em cache do pacote e das respetivas dependências. Se não existir uma cópia em cache, o repositório remoto transfere o pacote da origem a montante e coloca-o em cache antes de o disponibilizar. Pode verificar se o repositório remoto obteve os pacotes da origem a montante vendo a lista de pacotes no repositório.

Para um repositório virtual, o Artifact Registry pesquisa repositórios a montante para o pacote pedido.

  • Os repositórios remotos a montante transferem e colocam em cache o pacote pedido se não existir uma cópia em cache. Os repositórios virtuais apenas publicam pacotes pedidos e não os armazenam.
  • Se pedir uma versão que esteja disponível em mais do que um repositório a montante, o Artifact Registry escolhe um repositório a montante para usar com base nas definições de prioridade configuradas para o repositório virtual.

Por exemplo, considere um repositório virtual com as seguintes definições de prioridade para repositórios upstream:

  • main-repo: prioridade definida como 100
  • secondary-repo1: prioridade definida como 80.
  • secondary-repo2: prioridade definida como 80.
  • test-repo: prioridade definida como 20.

main-repo tem o valor de prioridade mais elevado, pelo que o repositório virtual é sempre pesquisado primeiro.

Ambos os elementos secondary-repo1 e secondary-repo2 têm a prioridade definida como 80. Se um pacote pedido não estiver disponível em main-repo, o Artifact Registry pesquisa estes repositórios em seguida. Uma vez que ambos têm o mesmo valor de prioridade, o Artifact Registry pode optar por publicar um pacote de qualquer um dos repositórios se a versão estiver disponível em ambos.

test-repo tem o valor de prioridade mais baixo e vai publicar um artefacto armazenado se nenhum dos outros repositórios a montante o tiver.

Eliminar pacotes e versões

Modos de repositório: padrão, remoto

Pode eliminar um pacote e todas as respetivas versões ou eliminar uma versão específica.

  • Depois de eliminar um pacote, não pode anular a ação.
  • Para repositórios remotos, apenas a cópia em cache do pacote é eliminada. A fonte a montante não é afetada. Se eliminar um pacote em cache, o Artifact Registry transfere-o e coloca-o novamente em cache da próxima vez que o repositório receber um pedido para a mesma versão do pacote.

Antes de eliminar um pacote ou uma versão do pacote, verifique se comunicou ou resolveu quaisquer dependências importantes do mesmo.

Para eliminar um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Selecione o pacote que quer eliminar.

  4. Clique em ELIMINAR.

  5. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Substitua o seguinte:

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

A flag --async faz com que o comando seja devolvido imediatamente, sem aguardar a conclusão da operação em curso.

Para eliminar versões de um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Clique num pacote para ver as versões desse pacote.

  4. Selecione as versões que quer eliminar.

  5. Clique em ELIMINAR.

  6. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Substitua o seguinte:

  • VERSION é o nome da versão a eliminar.
  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

A flag --async faz com que o comando seja devolvido imediatamente, sem aguardar a conclusão da operação em curso.

O que se segue?