{"id":29427560,"url":"https://github.com/cleosilva/java-desafios","last_synced_at":"2026-04-12T07:36:43.327Z","repository":{"id":303313822,"uuid":"1013967494","full_name":"cleosilva/java-desafios","owner":"cleosilva","description":"Desafios de programação Java com CI/CD automatizado - Níveis progressivos de dificuldade com Maven e GitHub Actions","archived":false,"fork":false,"pushed_at":"2025-07-09T15:53:29.000Z","size":105,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T07:36:26.973Z","etag":null,"topics":["automation","ci-cd","code-quality","coding-challenges","github-actions","java","maven","programing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cleosilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-04T19:33:29.000Z","updated_at":"2025-11-11T13:17:35.000Z","dependencies_parsed_at":"2025-07-07T00:35:03.247Z","dependency_job_id":"5f436049-879c-4b9d-aec8-ce3ff92a795b","html_url":"https://github.com/cleosilva/java-desafios","commit_stats":null,"previous_names":["cleosilva/java-desafios"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cleosilva/java-desafios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleosilva%2Fjava-desafios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleosilva%2Fjava-desafios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleosilva%2Fjava-desafios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleosilva%2Fjava-desafios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cleosilva","download_url":"https://codeload.github.com/cleosilva/java-desafios/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleosilva%2Fjava-desafios/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31707953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","ci-cd","code-quality","coding-challenges","github-actions","java","maven","programing"],"created_at":"2025-07-12T13:09:26.262Z","updated_at":"2026-04-12T07:36:43.304Z","avatar_url":"https://github.com/cleosilva.png","language":"Java","readme":"# 💻 Desafios Java — Do Básico ao Avançado\n\nEste repositório reúne uma coleção de desafios em **Java**, organizados por **níveis de dificuldade** e **conceitos fundamentais da linguagem e da orientação a objetos**. Os desafios foram elaborados como parte da minha jornada de aprendizado e prática rumo à excelência em desenvolvimento back-end com Java.\n\n---\n\n## 🧭 Níveis e Foco de Aprendizagem\n\n| Nível | Título                           | Foco                                                                 |\n|-------|----------------------------------|----------------------------------------------------------------------|\n| 1     | Fundamentos                      | Construtores, `final`, `record`, `static`, herança básica           |\n| 2     | Abstração e Estrutura            | Coleções, polimorfismo, interfaces, generics                        |\n| 3     | Robustez e Interação             | Exceções, leitura/escrita de arquivos (I/O Streams)                 |\n| 4     | Integração e Arquitetura         | Camadas, serviços, padrões, integração de conceitos                 |\n\n---\n\n## ✅ Desafios Resolvidos\n\n### 🟢 Nível 1: Fundamentos\n\n| Código | Desafio                                                   | Caminho                   |\n|--------|-----------------------------------------------------------|---------------------------|\n| 1.1    | Gerenciamento Simples de Produtos                         | [`nivel-1/desafio-1.1`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel1/desafio1) |\n| 1.2    | Contador de Instâncias com `static`                       | [`nivel-1/desafio-1.2`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel1/desafio2) |\n| 1.3    | Hierarquia de Animais (Herança)                           | [`nivel-1/desafio-1.3`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel1/desafio3) |\n\n---\n\n### 🟡 Nível 2: Abstração e Estrutura\n\n| Código | Desafio                                                   | Caminho                                                                                                                 |\n|--------|-----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|\n| 2.1    | Sistema de Biblioteca (Herança + Coleções)                | [`nivel-2/desafio-2.1`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel2/desafio1) |\n| 2.2    | Sistema de Pagamento com Interface                        | [`nivel-2/desafio-2.2`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel2/desafio2) |\n| 2.3    | Caixa Genérica (Generics)                                 | [`nivel-2/desafio-2.3`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel2/desafio3)                                                                                         |\n\n---\n\n### 🟠 Nível 3: Robustez e Interação\n\n| Código | Desafio                                                   | Caminho                                                                                                                   |\n|--------|-----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|\n| 3.1    | Validação de Entrada com Exceções                         | [`nivel-3/desafio-3.1`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel3/desafio1) |\n| 3.2    | Logger com Escrita em Arquivo                             | [`nivel-3/desafio-3.2`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel3/desafio2) |\n\n---\n\n### 🔴 Nível 4: Integração e Arquitetura\n\n| Código | Desafio                                                   | Caminho                                                                                                                   |\n|--------|-----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|\n| 4.1    | Sistema de Pedidos Completo                               | [`nivel-4/desafio-4.1`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel4/desafio1) |\n| 4.2    | Serviços com Logger e Configurações                       | [`nivel-4/desafio-4.2`](https://github.com/cleosilva/java-desafios/tree/main/src/main/java/org/cleosilva/nivel4/desafio2) |\n\n---\n\n## 🔧 Tecnologias e Ferramentas\n\n### **Linguagem e Build**\n- **Java 21** (LTS) - Utilizando recursos modernos como Records\n- **Maven** - Gerenciamento de dependências e build\n- **JUnit 5 + AssertJ** - Testes unitários (preparado para implementação)\n\n### **CI/CD Pipeline**\n- **GitHub Actions** - Integração e entrega contínua\n- **Execução automática** em push e pull requests\n- **Artefatos de build** salvos automaticamente\n\n---\n\n## 🚀 CI/CD Implementation\n\n### **Pipeline Status**\n![CI Status](img.png)\n\n### **O que o CI faz automaticamente:**\n\n#### **🔍 Build Pipeline**\n- ✅ **Checkout do código** - Baixa o código do repositório\n- ✅ **Setup Java 21** - Configura o ambiente JDK\n- ✅ **Cache Maven** - Otimiza tempo de build reutilizando dependências\n- ✅ **Validação** - Verifica integridade do projeto Maven\n- ✅ **Compilação** - Compila todos os arquivos `.java`\n- ✅ **Empacotamento** - Gera JARs executáveis\n- ✅ **Execução automática** - Testa execução dos desafios\n- ✅ **Upload de artefatos** - Salva builds para download (5 dias)\n\n#### **🧪 Quality Pipeline**\n- ✅ **Análise de estrutura** - Verifica organização do código\n- ✅ **Verificação de padrões** - Analisa qualidade do código\n- ✅ **Relatórios** - Gera métricas de linhas e arquivos\n\n### **Triggers do CI:**\n```yaml\n# Executa automaticamente em:\n- Push para branches: main, develop\n- Pull requests para: main\n```\n\n### **Visualização dos Resultados:**\n[![Java CI with Maven](https://github.com/cleosilva/java-desafios/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/cleosilva/java-desafios/actions/workflows/ci.yml)\n[![Simple Auto PR](https://github.com/cleosilva/java-desafios/actions/workflows/auto-pr.yml/badge.svg)](https://github.com/cleosilva/java-desafios/actions/workflows/auto-pr.yml)\n- **GitHub Actions Tab** - Logs detalhados de execução\n- **Commits** - Status visual (✅/❌) em cada commit\n- **Pull Requests** - Validação automática antes do merge\n- **Artifacts** - Download dos JARs compilados\n\n---\n\n## 📦 Estrutura do Projeto\n\n```bash\njava-desafios/\n├── .github/\n│   └── workflows/\n│       └── ci.yml                 # 🔄 Pipeline de CI/CD\n├── README.md\n├── pom.xml                        # 📦 Configuração Maven\n├── src/\n│   └── main/\n│       └── java/\n│           └── org/\n│               └── cleosilva/\n│                   ├── nivel1/\n│                   │   ├── desafio1/\n│                   │   ├── desafio2/\n│                   │   └── desafio3/\n│                   ├── nivel2/\n│                   │   ├── desafio1/\n│                   │   ├── desafio2/\n│                   │   └── desafio3/\n│                   ├── nivel3/\n│                   └── nivel4/\n└── target/                        # 🎯 Arquivos compilados (gerado automaticamente)\n```\n\n---\n\n## 🧪 Como Executar\n\n### **Pré-requisitos:**\n```bash\njava -version    # Java 21+\nmvn -version     # Maven 3.6+\n```\n\n### **Execução Local:**\n\n#### **Via Maven:**\n```bash\n# Compilar o projeto\nmvn clean compile\n\n# Executar um desafio específico\nmvn exec:java -nivel1-desafio1\n\n# Gerar JAR\nmvn package\n\n# Executar testes (quando implementados)\nmvn test\n```\n\n#### **Via Java direto:**\n```bash\n# Compilar e executar\nmvn clean compile\njava -cp target/classes org.cleosilva.nivel1.desafio1.Main\n```\n\n### **Execução via GitHub Actions:**\nO CI executa automaticamente todos os desafios a cada push! 🚀\n\n### **Download dos Artefatos:**\n1. Vá para a aba **Actions** do repositório\n2. Clique no último build bem-sucedido\n3. Baixe os **artifacts** com os JARs compilados\n\n---\n\n## 📋 Critérios de Avaliação Pessoal\n\n✅ **Código (40%)**: organização, clareza, uso correto dos recursos\n\n🧱 **Arquitetura (30%)**: separação de responsabilidades, coesão e desacoplamento\n\n📘 **Boas Práticas (20%)**: nomenclatura, exceções, legibilidade\n\n✨ **Criatividade (10%)**: soluções elegantes e melhorias extras\n\n---\n\n## 🚀 Dicas de Progressão\n\n- Comece onde estiver confortável e vá subindo o nível gradualmente\n- Faça revisões do seu próprio código após 1 ou 2 dias\n- Refatore sempre que puder, é assim que se aprende\n- Teste edge cases (valores nulos, limites, erros esperados)\n- Documente suas decisões técnicas\n- **Observe o CI**: Use os logs para identificar problemas rapidamente\n\n---\n\n## 💡 Próximos Passos\n\n### **Desenvolvimento:**\n- 🧱 Design Patterns\n- ☁️ Spring Framework e Web\n- 🧵 Programação Reativa\n- 🐳 Containers, APIs REST e microsserviços\n\n### **DevOps:**\n- 🔧 Testes automatizados (JUnit 5 + AssertJ)\n- 🏗️ CD Pipeline (deployment automático)\n- 🐋 Containerização com Docker\n- 📊 Monitoramento e métricas\n\n---\n\n## ✍️ Sobre\n\nTodos os desafios foram pensados para simular cenários reais, focar em boas práticas e desenvolver uma base sólida que permita crescer com segurança e autonomia.\n\n**Novo diferencial:** Implementação de CI/CD desde o início, simulando um ambiente profissional real onde cada mudança é validada automaticamente!\n\nSinta-se livre para clonar, testar, dar sugestões ou feedbacks!","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleosilva%2Fjava-desafios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcleosilva%2Fjava-desafios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleosilva%2Fjava-desafios/lists"}