kyriosdata / exemplo

Organização básica de projeto em Java (um ponto de partida)
73 stars 82 forks source link

Build Status SonarCloud Status Known Vulnerabilities Maven Central

Escopo, pré-requisitos e objetivo

Projeto que serve de referência para o desenvolvimento de software em Java.

É um projeto proposto para ser clonado e reutilizado, faz uso de Spring Boot 3, JDK 17 (exigido) e Maven 3.8.6.

Há um conjunto relativamente extenso de ferramentas para avaliação do código do projeto, o que é um bom ponto de partida para implementação de DevOps.

Para ilustrar o projeto inclui: (a) uma biblioteca formada por um único método que identifica o dia da semana para uma data fornecida; (b) uma aplicação que oferece tal funcionalidade via linha de comandos e (c) uma RESTFul API ambas para acesso à funcionalidade da biblioteca.

Objetivo: ilustrar uma organização de código em Java usando "boas práticas" para inspirar projetos reais.

Iniciando...

Agora você poderá executar os vários comandos abaixo.

Pré-requisitos

Limpar, compilar, executar testes de unidade e cobertura

Produzindo código executável (depende da JVM)

A execução e exemplos de chamadas são fornecidos na seção seguinte.

Executando a aplicação e a RESTFul API

Produzindo código executável (native image) (em testes)

Documentação

Análise estática

Trata-se da análise do código sem que seja executado. Esta análise produz uma "noção de quão bom" está o código sob alguns aspecto e, em consequência, permite orientar eventuais ações de melhoria. Fique atento, "sair bem" na análise estática não significa que "agrada usuários". A análise estática observa o código.

Todas estas análises devem ser realizadas em todos os projetos? Não! Aquelas relevantes para um dado projeto deverão ser configuradas em conformidade com o contexto em questão.

Relatório do projeto

Disponibilizando biblioteca no repositório Maven Central

A boa notícia é que este pom.xml está devidamente configurado para publicação no Maven Central, contudo, depende de outras ações e da configuração do arquivo HOMEDIR/.m2/settings.xml.

A publicação usando o Maven Central é mais complexa do que a alternativa recente oferecida pelo JitPack, ou até mesmo pelo Github Packages, por exemplo.

Dependências

O desenvolvimento de código em Java, em geral, usufrui de um significativo conjunto de bibliotecas e frameworks. Esta reutilização é incorporada em um projeto por meio de dependências. Gerenciá-las torna-se necessário e há dois plugins úteis para tal. Consulte a documentação deles para outros além daqueles ilustrados abaixo: Version Maven Plugin (aqui) e Apache Maven Dependency Plugin (aqui).

Banco de Dados H2

Nos cenários onde é feito uso de um banco relacional, aqui são oferecidos recursos para desenvolvimento usando o H2 (https://www.h2database.com).

Outros recursos

Integração contínua

Notou os emblemas (badges) no início da página? Todo commit na presente página automaticamente irá realizar uma série de operações, como compilação, execução dos testes de unidade e várias análises estáticas. O resultado geral é imediatamente acessível por meio dos emblemas (clique neles), onde detalhes são disponibilizados nas páginas correspondentes. Observe que isso se transforma em um significativo instrumento de visibilidade do projeto.

Para projetos open source os serviços oferecidos são gratuitos. Seguem aqui os merecidos agradecimentos a:

A lista acima não tem a pretensão de ser exclusiva. Abaixo seguem outros serviços: