Usar o CodeArtifact com mvn
É possível usar o comando mvn para executar compilações do Maven. Esta seção mostra como configurar o mvn para usar um repositório do CodeArtifact.
Tópicos
Buscar dependências
Para configurar o mvn para buscar dependências de um repositório do CodeArtifact, você deve editar o arquivo de configuração do Maven, settings.xml e, opcionalmente, o POM do seu projeto.
Caso contrário, crie e armazene um token de autenticação do CodeArtifact 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 repositório do CodeArtifact.
-
Em
settings.xml(geralmente encontrado em~/.m2/settings.xml), adicione uma seção<servers>com uma referência à variável de ambienteCODEARTIFACT_AUTH_TOKENpara que o Maven passe o token nas solicitações HTTP.<settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings> -
Adicione o endpoint de URL ao repositório do CodeArtifact em um elemento
<repository>. Você pode fazer isso nosettings.xmlou arquivo POM do seu projeto.Você pode recuperar o endpoint do seu repositório usando o comando
get-repository-endpointAWS CLI.Por exemplo, com um repositório chamado
my_repodentro de um domínio chamadomy_domain, o comando é o seguinte:aws codeartifact get-repository-endpoint --domain my_domain --repository my_repo --format mavenO comando
get-repository-endpointretornará 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.awsAdicione o endpoint do repositório ao
settings.xmlda 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 seção
<repositories>a um arquivo POM do projeto para usar o CodeArtifact somente para esse 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 o CodeArtifact.
Depois de fazer essas alterações na configuração, você pode criar o projeto.
mvn compile
O Maven registra o URL completo de todas 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 com mvn em um repositório do CodeArtifact, você também deve editar ~/.m2/settings.xml e o POM do projeto.
Caso contrário, crie e armazene um token de autenticação do CodeArtifact 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 repositório do CodeArtifact.
-
Adicione uma seção
<servers>asettings.xmlcom uma referência à variável de ambienteCODEARTIFACT_AUTH_TOKENpara que o Maven passe o token nas solicitações HTTP.<settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings> -
Adicione uma seção
<distributionManagement>aopom.xmldo 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 --domainmy_domain--domain-owner111122223333--repositorymy_repo--formatmaven\ --namespacecom.company.framework--packagemy-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 repositório do CodeArtifact com mvn deploy:deploy-file. Isso pode ser útil para usuários que desejam publicar artefatos e têm somente arquivos JAR e não têm acesso ao código-fonte do pacote ou aos arquivos POM.
O comando mvn deploy:deploy-file gerará um arquivo POM com base nas informações passadas na linha de comando.
Publicar artefatos Maven de terceiros
Caso contrário, crie e armazene um token de autenticação do CodeArtifact 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 repositório do CodeArtifact.
-
Crie um arquivo
~/.m2/settings.xmlcom o seguinte conteúdo:<settings> <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> </settings> -
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 argumentos groupID, artifactID, version e file para publicar um JAR diferente.
Essas instruções têm como base os exemplos no Guia para implantação de JARs de terceiros em repositórios remotos
Restringir os downloads de dependências do Maven em um repositório do 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 ao settings.xml para fazer com que mvn sempre use seu repositório do CodeArtifact.
<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 do 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 repositório do CodeArtifact e plug-ins do 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: