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
Mensagem pronta para colar
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-containerOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/quarkus-native-and-container/SKILL.md -o SKILL.mdConteú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
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
bun-runtime
Faz seu agente usar o Bun para rodar, organizar e testar código. Ajuda a escolher o Bun em vez de outras ferramentas e a migrar projetos existentes.
affaan-m/ECC
database-migrations
Ajuda seu agente a fazer mudanças seguras em bancos de dados. Ele garante que as alterações possam ser desfeitas e minimiza o tempo de inatividade.
affaan-m/ECC
deployment-patterns
Configura fluxos de implantação e CI/CD, containerização e estratégias de rollback para garantir lançamentos seguros.
affaan-m/ECC