Pular para o conteúdo
Skillpedia
Deploy e nuvem (DevOps)40 mil · #5322

quarkus-native-and-container

Permite ao agente criar executáveis nativos e imagens de contêiner para projetos Quarkus. Ele também ajuda a configurar implantações em Kubernetes.

O que ela faz

Esta ferramenta ajuda a criar versões mais rápidas e eficientes do seu código Quarkus, chamadas de 'executáveis nativos'. Ela também auxilia na correção de erros comuns que surgem durante esse processo e na criação de pacotes para rodar em contêineres como Docker ou em plataformas como Kubernetes.

Quando usar

  • ✓Quando você quer que sua aplicação Quarkus inicie muito mais rápido.
  • ✓Ao preparar sua aplicação para rodar em ambientes de nuvem como Kubernetes.
  • ✓Se você encontrar erros ao tentar criar a versão nativa da sua aplicação.

Exemplo do que pedir para a IA

“Como faço para criar um executável nativo da minha aplicação Quarkus e empacotá-lo em um contêiner Docker?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/quarkus-native-and-container/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/quarkus-native-and-container/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta utiliza comandos específicos do Maven ou Gradle para compilar seu código Quarkus em um executável nativo. Se ocorrerem erros, ela oferece maneiras de registrar partes do código que precisam ser acessadas de forma especial durante a compilação nativa ou de incluir arquivos necessários.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill quarkus-native-and-container

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/quarkus-native-and-container/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Quarkus Nativo e Contêiner

Verifique primeiro a versão do Quarkus do projeto. Para trabalhos genéricos (não Quarkus) com GraalVM, use a habilidade opcional java-add-graalvm-native-image-support se instalada (caso contrário, consulte a documentação do GraalVM, https://www.graalvm.org/latest/reference-manual/native-image/).

Build Nativo

# container build: no local GraalVM needed (Docker/Podman required)
./mvnw package -Dnative -Dquarkus.native.container-build=true
# local Mandrel/GraalVM (JAVA_HOME / GRAALVM_HOME must point to it)
./mvnw package -Dnative
# Gradle, Quarkus 3.10+ (add -Dquarkus.native.container-build=true without a local Mandrel)
./gradlew build -Dquarkus.native.enabled=true -Dquarkus.package.jar.enabled=false
# Gradle, older Quarkus
./gradlew build -Dquarkus.package.type=native

quarkus.package.type foi depreciado na versão 3.10 (o guia de migração 3.10 o substitui por quarkus.native.enabled e quarkus.package.jar.*); ele ainda é aceito na versão 3.40 com um aviso. Controle de versão verificado com Gradle: na versão 3.9.5, -Dquarkus.native.enabled=true -Dquarkus.package.jar.enabled=false é ignorado (avisos de "chave de configuração não reconhecida") e apenas um quarkus-app para JVM é criado, enquanto -Dquarkus.package.type=native produz o executável nativo; nas versões 3.10.0, 3.27.6 e 3.40.1, as novas chaves produzem o executável nativo (a versão 3.10.0 também aceita a chave antiga com o aviso de depreciação). O perfil Maven native no pom.xml gerado já define quarkus.native.enabled=true, quarkus.package.jar.enabled=false e skipITs=false quando -Dnative é passado.

Build local verificado em macOS arm64 com o pacote Mandrel para sua linha Quarkus de https://github.com/graalvm/mandrel/releases (mandrel-java25-macos-aarch64-25.0.4.1-Final.tar.gz para 3.40.1, extraído em qualquer lugar, JAVA_HOME apontando para seu Contents/Home; as ferramentas de linha de comando do Xcode são suficientes): o package -Dnative Maven na versão 3.40.1 levou cerca de 70 s e o build Gradle com as duas flags cerca de 2,5 min; o executável é um binário Mach-O que inicia em cerca de 0,04 s, e ./mvnw verify -Dnative executou o *IT contra ele com sucesso. O Quarkus verifica a versão do Mandrel/GraalVM: a versão 3.40 recusa a 23.1 ("Versão desatualizada do GraalVM ou Mandrel detectada ... Quarkus atualmente suporta 25.0.0"), portanto, use Mandrel 25 com 3.40 e mandrel-java21-macos-aarch64-23.1.12.1-Final com 3.27.6 (Maven verify -Dnative e Gradle ambos verificados lá).

Binário: target/*-runner (Maven) ou build/*-runner (Gradle). Um build de contêiner no macOS ou Windows produz um arquivo ELF para Linux que não pode ser executado no host: execute-o em um contêiner Linux (por exemplo, docker run -v "$PWD/target:/w:ro" registry.access.redhat.com/ubi9/ubi-minimal /w/<name>-runner com o datasource passado através das variáveis de ambiente QUARKUS_DATASOURCE_*), e note que ./mvnw verify -Dnative falha então no *IT com Exit code is: '126'. Mandrel é a distribuição GraalVM da Red Hat para Quarkus; o build de contêiner puxa uma imagem de builder Mandrel que corresponde ao projeto (a versão 3.40.1 usou quay.io/quarkus/ubi9-quarkus-mandrel-builder-image:jdk-25, Mandrel 25.0.4.1, cerca de 2,5 minutos incluindo o download da imagem); substitua-o com quarkus.native.builder-image se necessário. Builds nativos são lentos e consomem muita memória (vários GB); faça-os em CI ou sob demanda, não em cada execução de teste.

Falhas Comuns em Builds Nativos

Sintoma Correção
ClassNotFoundException / NoSuchMethodException em tempo de execução (reflexão, serialização JSON de DTOs) anote com @RegisterForReflection (ou @RegisterForReflection(targets = ...) em uma classe contêiner para tipos de terceiros), ou coloque um reflection-config.json em src/main/resources e defina quarkus.native.additional-build-args=-H:ReflectionConfigurationFiles=reflection-config.json
Arquivos de recursos ausentes quarkus.native.resources.includes=templates/**
Biblioteca não compatível com nativo procure por uma extensão Quarkus, ou escolha outra biblioteca
Classe inicializada em tempo de build falha --initialize-at-run-time=... através de quarkus.native.additional-build-args
OutOfMemoryError durante o build aumente a memória do contêiner ou quarkus.native.native-image-xmx
Proxies dinâmicos / serialização registre via anotações ou extensão
@RegisterForReflection(targets = ExternalDto.class)
public record ProductDto(String name) {}

…

Perguntas frequentes

O que é um 'executável nativo'?

É uma versão do seu programa que é compilada diretamente para rodar na máquina, sem precisar de um ambiente Java completo. Isso o torna mais rápido para iniciar e, geralmente, consome menos recursos.

Por que a criação do executável nativo é lenta?

O processo de compilação nativa é complexo e exige muita memória e processamento, pois ele analisa todo o código para otimizá-lo e prepará-lo para rodar sem o Java Virtual Machine (JVM).

O que fazer se eu receber um erro de 'ClassNotFoundException' ao criar o executável nativo?

Isso geralmente significa que o compilador nativo não sabe que uma determinada classe precisa ser incluída ou acessada de forma especial. Você pode resolver isso adicionando anotações específicas no seu código ou criando um arquivo de configuração para informar o compilador.

Detalhes

Descrição original do autor

Build Quarkus native executables (Mandrel/GraalVM), fix native failures with reflection registration, test the native binary, and produce container images and Kubernetes/OpenShift manifests. Use for native, Docker, Jib or Kubernetes work in a Quarkus project.

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5322
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas