Guia completo para configuracao, execucao e contribuicao no projeto.
| Ferramenta | Versao Minima | Como verificar |
|---|---|---|
| Java | 17 (recomendado 21/25) | java -version |
| Maven | 3.9+ | mvn -version |
O projeto inclui o Maven Wrapper (
mvnw/mvnw.cmd), entao o Maven nao precisa estar instalado globalmente. O codigo-fonte usa recursos disponiveis desde o Java 17 epom.xmldefinejava.version=17, entao compila/roda em qualquer JDK 17, 21 ou 25.Importante: e preciso um JDK (que acompanha o
javac), nao apenas um JRE. Se ojava -versionfunciona mas o build falha comrelease version 17 not supported, sua maquina so tem o JRE instalado — definaJAVA_HOMEapontando para um JDK completo (veja Solucao de Problemas).
# 1. Clonar o repositorio
git clone https://github.com/GoomezCode/CosmosX_API.git
# 2. Entrar no diretorio
cd CosmosX_API
# 3. Compilar o projeto
./mvnw clean compile # Linux/Mac
mvnw.cmd clean compile # WindowsCosmosX_API/
├── .opencode/ # Configuracao opencode (local, gitignored)
│ └── skills/
│ └── java-design-patterns/
│ └── SKILL.md
├── CHANGELOG.md # Historico de versoes
├── LICENSE # Licenca MIT
├── data/ # Banco H2 (runtime, gitignored)
├── docs/ # Documentacao
│ ├── GUIA.md
│ ├── ENDPOINTS.md
│ ├── ROADMAP.md
│ ├── ARQUITETURA.md
│ └── TECHNICAL_REFERENCE.md
├── src/
│ ├── main/
│ │ ├── java/com/goomez/CosmosX/
│ │ │ ├── CosmosXApplication.java
│ │ │ ├── config/ # CORS, OpenAPI, DataSeeder
│ │ │ ├── controller/ # Endpoints REST
│ │ │ ├── service/ # Logica de negocio
│ │ │ ├── repository/ # Repositorios JPA (Spring Data)
│ │ │ ├── model/ # Entidades JPA
│ │ │ ├── dto/ # Request/Response
│ │ │ ├── exception/ # Excecoes customizadas
│ │ │ └── handler/ # Exception Handler
│ │ └── resources/
│ │ └── application.properties
│ └── test/
│ ├── java/com/goomez/CosmosX/
│ │ ├── CosmosXApplicationTests.java
│ │ ├── e2e/ # Teste de integracao E2E
│ │ ├── controller/ # Testes de endpoint (MockMvc)
│ │ └── service/ # Testes de services (Mockito)
│ └── resources/
│ └── application.properties # H2 in-memory p/ testes
├── opencode.json # Configuracao opencode (local, gitignored)
├── pom.xml # Dependencias Maven
└── README.md
spring.application.name=CosmosX
# H2 file-based (gitignored)
spring.datasource.url=jdbc:h2:file:./data/cosmosx
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
# H2 console (dev)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# CORS (site integrado)
app.cors.allowed-origins=*
# Actuator (health check)
management.endpoints.web.exposure.include=healthPorta padrao: 8080
Para alterar a porta, adicione:
server.port=8081O banco H2 e criado automaticamente em
./data/cosmosx(gitignored). Nos testes, um H2 in-memory e usado viasrc/test/resources/application.properties.
| Dependencia | Descricao |
|---|---|
spring-boot-starter-webmvc |
Framework web |
spring-boot-starter-data-jpa |
Persistencia JPA (Hibernate) |
spring-boot-h2console |
Banco H2 + console web |
spring-boot-starter-validation |
Bean Validation |
spring-boot-starter-actuator |
Health check (/actuator/health) |
springdoc-openapi-starter-webmvc-ui |
Swagger/OpenAPI |
spring-boot-devtools |
Hot reload (dev) |
spring-boot-starter-webmvc-test |
Testes (JUnit 5, MockMvc, Mockito) |
jacoco-maven-plugin |
Medida de cobertura (gate >= 80% linhas) |
# 1. (opcional, mas recomendado) apontar para um JDK completo
export JAVA_HOME=~/.jdks/jdk-25.0.4.1+1 # o seu JDK, com javac
# 2. Usando Maven Wrapper
./mvnw spring-boot:run # Linux/Mac
mvnw.cmd spring-boot:run # Windows
# Ou apos compilar
java -jar target/CosmosX-2.0.2.jarA aplicacao estara disponivel em: http://localhost:8080
| Recurso | URL |
|---|---|
| API | http://localhost:8080 |
| Swagger UI | http://localhost:8080/swagger-ui.html |
| OpenAPI JSON | http://localhost:8080/v3/api-docs |
| H2 Console | http://localhost:8080/h2-console |
| Health Check | http://localhost:8080/actuator/health |
# Executar todos os testes + gate de cobertura (JaCoCo >= 80% linhas)
./mvnw verify
# Executar somente os testes
./mvnw test
# Executar testes especificos
./mvnw test -Dtest=astronautServiceTestRelatorio de cobertura:
target/site/jacoco/index.html.
Causa 1 — JDK menor que 17: o terminal ou a IDE usa um JAVA_HOME/SDK apontando para um JDK 8/11/15, por exemplo.
Causa 2 — so o JRE instalado: o java do PATH existe, mas nao vem com javac (o compilador). Ex.: em Fedora, apenas java-25-openjdk (JRE) instalado, sem o pacote -devel (JDK). O Maven precisa do JDK completo.
Solucao:
- Confirme o JDK ativo no terminal:
java -version # deve mostrar 17, 21 ou 25 echo $JAVA_HOME # se vazio, o mvnw usa o java do PATH
- Aponte
JAVA_HOMEpara um JDK completo (comjavac):No Windows, definaexport JAVA_HOME=~/.jdks/jdk-25.0.4.1+1 # ajuste o caminho do seu JDK ./mvnw spring-boot:run
JAVA_HOMEnas variaveis de ambiente e reabra o terminal. - Na IDE (IntelliJ/VS Code), configure o Project SDK para um JDK 17+ (nao um JRE).
- Se nao tiver JDK nenhum instalado, instale um completo:
- Fedora:
sudo dnf install java-17-openjdk-devel(oujava-25-openjdk-devel) - Windows/macOS: baixe o Temurin 17/21/25 da Adoptium
- Fedora:
- Confirme que instalou o compilador:
javac -versiondeve responder (secommand not found, e JRE/imcompleto).
server.port=8081adicionado em src/main/resources/application.properties, ou encerre o processo que ocupa a porta.
Outra instancia da aplicacao esta aberta com o mesmo banco ./data/. Feche a instancia anterior antes de iniciar.
main- Producaodevelop- Desenvolvimentofeature/*- Nova funcionalidadefix/*- Correcao de bug
- Criar branch da feature (
git checkout -b feature/nome-da-feature) - Fazer as alteracoes
- Commitar com mensagem descritiva
- Push e criar Pull Request
tipo(escopo): descricao
Exemplos:
feat(mission): adicionar execucao de missao
fix(astronaut): corrigir validacao de ID
docs(endpoints): atualizar documentacao
test(service): adicionar testes para MissionService