Use CodeArtifact com mvn - CodeArtifact

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use CodeArtifact com mvn

É possível usar o comando mvn para executar compilações do Maven. Esta seção mostra como configurar mvn para usar um CodeArtifact repositório.

Buscar dependências

Para configurar mvn para buscar dependências de um CodeArtifact repositório, você deve editar o arquivo de configuração do Maven e, opcionalmentesettings.xml, o do seu projeto. POM

  1. Caso contrário, crie e armazene um token de CodeArtifact autenticação em uma variável de ambiente conforme descrito em Passar um token de autenticação usando uma variável de ambiente Para configurar a autenticação no seu CodeArtifact repositório.

  2. Em settings.xml (normalmente encontrado em~/.m2/settings.xml), adicione uma <servers> seção com uma referência à variável de CODEARTIFACT_AUTH_TOKEN ambiente para que o Maven passe o token nas HTTP solicitações.

    <settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings>
  3. Adicione o URL endpoint do seu CodeArtifact repositório em um <repository> elemento. Você pode fazer isso no settings.xml POM arquivo do seu projeto.

    Você pode recuperar o endpoint do seu repositório usando o comando. get-repository-endpoint AWS CLI

    Por exemplo, com um repositório chamado my_repo dentro de um domínio chamado my_domain, o comando é o seguinte:

    aws codeartifact get-repository-endpoint --domain my_domain --repository my_repo --format maven

    O comando get-repository-endpoint retornará o endpoint do repositório:

    url 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/'
    nota

    Para usar um endpoint de pilha dupla, use o endpoint. codeartifact.region.on.aws

    Adicione o endpoint do repositório ao settings.xml da seguinte forma.

    <settings> ... <profiles> <profile> <id>default</id> <repositories> <repository> <id>codeartifact</id> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles> ... </settings>

    Ou você pode adicionar a <repositories> seção a um POM arquivo de projeto CodeArtifact para usar somente nesse projeto.

    <project> ... <repositories> <repository> <id>codeartifact</id> <name>codeartifact</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </repositories> ... </project>
Importante

Você pode usar qualquer valor no elemento <id>, mas ele deve ser o mesmo nos elementos <server> e <repository>. Isso permite que as credenciais especificadas sejam incluídas nas solicitações para CodeArtifact.

Depois de fazer essas alterações na configuração, você pode criar o projeto.

mvn compile

O Maven registra todas URL as dependências que ele baixa para o console.

[INFO] ------------------< com.example.example:myapp >------------------- [INFO] Building myapp 1.0 [INFO] --------------------------------[ jar ]--------------------------------- Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom (11 kB at 3.9 kB/s) Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom (68 kB at 123 kB/s) Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar (54 kB at 134 kB/s)

Publicar artefatos

Para publicar um artefato do Maven em um CodeArtifact repositório, você também deve editar ~/.m2/settings.xml o projeto. mvn POM

  1. Caso contrário, crie e armazene um token de CodeArtifact autenticação em uma variável de ambiente conforme descrito em Passar um token de autenticação usando uma variável de ambiente Para configurar a autenticação no seu CodeArtifact repositório.

  2. Adicione uma <servers> seção settings.xml com uma referência à variável de CODEARTIFACT_AUTH_TOKEN ambiente para que o Maven passe o token nas HTTP solicitações.

    <settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings>
  3. Adicione uma seção <distributionManagement> ao pom.xml do seu projeto.

    <project> ... <distributionManagement> <repository> <id>codeartifact</id> <name>codeartifact</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </distributionManagement> ... </project>

Depois de fazer essas alterações na configuração, você pode criar o projeto e publicá-lo no repositório específico.

mvn deploy

Use list-package-versions para verificar se o pacote foi publicado com sucesso.

aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven \ --namespace com.company.framework --package my-package-name

Exemplo de resultado:

{ "defaultDisplayVersion": null, "format": "maven", "namespace": "com.company.framework", "package": "my-package-name", "versions": [ { "version": "1.0", "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC", "status": "Published" } ] }

Publicar artefatos de terceiros

Você pode publicar artefatos Maven de terceiros em um CodeArtifact repositório com. mvn deploy:deploy-file Isso pode ser útil para usuários que desejam publicar artefatos e só têm JAR arquivos e não têm acesso ao código-fonte ou aos POM arquivos do pacote.

O mvn deploy:deploy-file comando gerará um POM arquivo com base nas informações passadas na linha de comando.

Publicar artefatos Maven de terceiros
  1. Caso contrário, crie e armazene um token de CodeArtifact autenticação em uma variável de ambiente conforme descrito em Passar um token de autenticação usando uma variável de ambiente Para configurar a autenticação no seu CodeArtifact repositório.

  2. Crie um arquivo ~/.m2/settings.xml com o seguinte conteúdo:

    <settings> <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> </settings>
  3. Execute o comando mvn deploy:deploy-file:

    mvn deploy:deploy-file -DgroupId=commons-cli \ -DartifactId=commons-cli \ -Dversion=1.4 \ -Dfile=./commons-cli-1.4.jar \ -Dpackaging=jar \ -DrepositoryId=codeartifact \ -Durl=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/repo-name/
    nota

    O exemplo acima publica commons-cli 1.4. Modifique os argumentosgroupId, artifactID, version e file para publicar um diferente. JAR

Essas instruções são baseadas em exemplos no Guia para implantação de terceiros JARs em repositórios remotos da documentação do Apache Maven.

Restringir os downloads de dependências do Maven em um repositório CodeArtifact

Se um pacote não puder ser obtido de um repositório configurado, por padrão, o mvn comando o buscará no Maven Central. Adicione o mirrors elemento para settings.xml fazer com que mvn sempre use seu CodeArtifact repositório.

<settings> ... <mirrors> <mirror> <id>central-mirror</id> <name>CodeArtifact Maven Central mirror</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ... </settings>

Se você adicionar um elemento mirrors, você também deve ter um elemento pluginRepository em seu settings.xml ou pom.xml. O exemplo a seguir busca dependências de aplicativos e plug-ins do Maven de um repositório. CodeArtifact

<settings> ... <profiles> <profile> <pluginRepositories> <pluginRepository> <id>codeartifact</id> <name>CodeArtifact Plugins</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> ... </settings>

O exemplo a seguir busca dependências de aplicativos de um CodeArtifact repositório e busca plug-ins Maven do Maven Central.

<profiles> <profile> <id>default</id> ... <pluginRepositories> <pluginRepository> <id>central-plugins</id> <name>Central Plugins</name> <url>https://repo.maven.apache.org/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> .... </profile> </profiles>

Informações do Apache Maven Project

Para obter mais informações sobre o Maven, consulte esses tópicos no site do Apache Maven Project: