Gestione dei pacchetti Java

In questa pagina vengono descritte l'aggiunta, la visualizzazione e l'eliminazione di pacchetti Java.

Se vuoi utilizzare sbt come strumento di creazione per Scala e Java anziché utilizzare Maven o Gradle, è disponibile un plug-in sbt creato dalla community. Questa documentazione non descrive la configurazione o l'utilizzo dei client Scala.

Prima di iniziare

  1. Se il repository di destinazione non esiste, crea un nuovo repository.
  2. Verifica di disporre delle autorizzazioni necessarie per il repository.
  3. Verifica di aver configurato l'autenticazione. Se utilizzi un token di accesso, assicurati di aggiornare il token prima di connetterti al repository.
  4. (Facoltativo) Configura i valori predefiniti per i comandi gcloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i pacchetti, chiedi all'amministratore di concederti i seguenti ruoli IAM nel repository:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Aggiunta di pacchetti

Modalità repository: standard

Per aggiungere pacchetti al repository:

Maven

Utilizza mvn deploy e mvn release per aggiungere pacchetti al repository.

Per eseguire correttamente il deployment di un progetto Maven che fa riferimento a un elemento padre, il progetto deve includere il provider Artifact Registry Wagon in un file delle estensioni principali, come descritto nelle istruzioni per l'autenticazione.

Utilizza mvn deploy:deploy-file per caricare gli artefatti creati al di fuori di Maven.

Ad esempio, questo comando di esempio esegue il deployment di example/external.jar e del relativo file di progetto example/pom.xml nel repository 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

Per configurare l'integrazione con Cloud Build, consulta la pagina relativa all'integrazione con Cloud Build.

Gradle

Per pubblicare correttamente nel repository, il file build.gradle deve includere una sezione pubblicazioni in cui vengono definiti i file da caricare.

Utilizza il comando gradle publish per caricare un pacchetto nel repository.

Visualizzazione di pacchetti e versioni

Modalità repository: standard, remota

Per visualizzare i pacchetti e le versioni dei pacchetti utilizzando la console Google Cloud o gcloud:

Console

  1. Apri la pagina Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, fai clic su quello appropriato.

    Nella pagina Pacchetti sono elencati i pacchetti nel repository.

  3. Fai clic su un pacchetto per visualizzare le versioni del pacchetto.

gcloud

Per elencare i pacchetti in un repository, esegui questo comando:

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

Dove

  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Per visualizzare le versioni di un pacchetto, esegui questo comando:

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

Dove

  • PACKAGE è l'ID del pacchetto o l'identificatore completo del pacchetto.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Per i repository remoti, l'elenco restituito deve includere tutte le dipendenze dirette e transitorie.

Elenco dei file

Modalità repository: standard, remota

Puoi elencare i file in un repository, i file in tutte le versioni di un pacchetto specificato o i file in una versione specifica di un pacchetto.

Per tutti i comandi seguenti, puoi impostare un numero massimo di file da restituire aggiungendo il flag --limit al comando.

Per elencare tutti i file nel progetto, nel repository e nella posizione predefiniti quando sono configurati i valori predefiniti:

gcloud artifacts files list

Per elencare i file in un progetto, repository e località specificati, esegui questo comando:

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

Per elencare i file di tutte le versioni di un pacchetto specifico:

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

Per elencare i file per una versione specifica del pacchetto:

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

Sostituisci i seguenti valori:

  • LOCATION è la località a livello di una o più regioni del repository.
  • PROJECT è il tuo ID progetto Google Cloud. Se l'ID progetto contiene i due punti (:), consulta Progetti con ambito di dominio.
  • REPOSITORY è il nome del repository in cui è archiviata l'immagine.
  • PACKAGE è il nome del pacchetto.
  • VERSION è la versione del pacchetto.

Esempi

Considera le seguenti informazioni sul pacchetto:

  • Progetto: my-project
  • Repository: my-repo
  • Posizione del repository: us-central1
  • Pacchetto: my-app

Il seguente comando elenca tutti i file nel repository my-repo nella posizione us-central1 all'interno del progetto predefinito:

gcloud artifacts files list \
    --location=us-central1 \
    --repository=my-repo
Il seguente comando elenca i file nella versione 1.0 del pacchetto.

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

Download dei pacchetti in corso...

Modalità repository: standard, remota, virtuale

Per scaricare un artefatto come parte della build, devi dichiararlo come dipendenza.

Maven

  1. Dichiara i pacchetti da scaricare nel file del progetto pom.xml. L'esempio seguente dichiara la versione 1.0 del pacchetto artifact come dipendenza.

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

    Per scoprire di più sulle dipendenze Maven, consulta l'introduzione alle dipendenze di Maven e il riferimento sulle dipendenze.

  2. Creare il progetto Java.

    mvn compile
    

Gradle

  1. Dichiara i pacchetti da scaricare nel file del progetto build.gradle. L'esempio seguente dichiara la versione 1.0 del pacchetto artifact come dipendenza di compilazione esterna.

    Per saperne di più sulle dipendenze Gradle, consulta la documentazione di Gradle.

    dependencies {
        compile group: 'group', name: 'artifact', version: '1.0'
    }
    
  2. Creare il progetto Java.

    gradle build
    

Per i repository standard, viene scaricato un pacchetto direttamente dal repository.

Per un repository remoto, scarichi una copia memorizzata nella cache del pacchetto e delle sue dipendenze. Se non esiste una copia memorizzata nella cache, il repository remoto scarica il pacchetto dall'origine upstream e lo memorizza nella cache prima di fornirlo a te. Puoi verificare che il repository remoto abbia recuperato i pacchetti dall'origine upstream visualizzando l'elenco dei pacchetti nel repository.

Per un repository virtuale, Artifact Registry cerca il pacchetto richiesto nei repository upstream.

  • I repository remoti upstream scaricheranno e memorizzano nella cache il pacchetto richiesto se non esiste una copia memorizzata nella cache. I repository virtuali gestiscono solo i pacchetti richiesti, non li archiviano.
  • Se richiedi una versione disponibile in più di un repository upstream, Artifact Registry sceglie un repository a monte da utilizzare in base alle impostazioni di priorità configurate per il repository virtuale.

Ad esempio, considera un repository virtuale con le seguenti impostazioni di priorità per i repository upstream:

  • main-repo: priorità impostata su 100
  • secondary-repo1: priorità impostata su 80.
  • secondary-repo2: priorità impostata su 80.
  • test-repo: priorità impostata su 20.

main-repo ha il valore di priorità più alto, pertanto il repository virtuale viene sempre cercato per primo.

Sia secondary-repo1 che secondary-repo2 hanno priorità impostata su 80. Se un pacchetto richiesto non è disponibile in main-repo, Artifact Registry esegue la ricerca in questi repository. Poiché entrambi hanno lo stesso valore di priorità, Artifact Registry può scegliere di gestire un pacchetto da uno dei due repository se la versione è disponibile in entrambi.

test-repo ha il valore di priorità più basso e fornirà un artefatto archiviato se nessuno degli altri repository a monte lo dispone.

Eliminazione di pacchetti e versioni

Modalità repository: standard, remota

Puoi eliminare un pacchetto e tutte le relative versioni oppure eliminare una versione specifica.

  • L'eliminazione di un pacchetto non può essere annullata.
  • Per i repository remoti, viene eliminata solo la copia cache del pacchetto. L'origine upstream non è interessata. Se elimini un pacchetto memorizzato nella cache, Artifact Registry lo scarica e lo memorizza nella cache la volta successiva che il repository riceve una richiesta per la stessa versione del pacchetto.

Prima di eliminare un pacchetto o una versione del pacchetto, verifica di aver comunicato o risolto eventuali dipendenze importanti.

Per eliminare un pacchetto:

Console

  1. Apri la pagina Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, fai clic su quello appropriato.

    Nella pagina Pacchetti sono elencati i pacchetti nel repository.

  3. Seleziona il pacchetto da eliminare.

  4. Fai clic su ELIMINA.

  5. Nella finestra di dialogo di conferma, fai clic su ELIMINA.

gcloud

Esegui questo comando:

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

Dove

  • PACKAGE è il nome del pacchetto nel repository.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.
  • --async Torna immediatamente, senza attendere il completamento dell'operazione in corso.

Per eliminare le versioni di un pacchetto:

Console

  1. Apri la pagina Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, fai clic su quello appropriato.

    Nella pagina Pacchetti sono elencati i pacchetti nel repository.

  3. Fai clic su un pacchetto per visualizzare le relative versioni.

  4. Seleziona le versioni da eliminare.

  5. Fai clic su ELIMINA.

  6. Nella finestra di dialogo di conferma, fai clic su ELIMINA.

gcloud

Esegui questo comando:

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

Dove

  • PACKAGE è il nome del pacchetto nel repository.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.
  • --async viene restituito immediatamente, senza attendere il completamento dell'operazione in corso.

Passaggi successivi