There are Java project template that integrates next technologies:
- Spring Boot 2
- Spring Data JPA
- QueryDSL JPA
- Liquibase
- Postgres
- MapStruct
- Lombok
- JUnit 5 + Integration Tests
To build the project it is require to use next command
gradlew clean build
To build docker image it will require to use
docker build . -t app-template
To run the project it is require to use docker-compose
docker-compose -f ./docker/docker-compose.yaml up
To run only project dependencies it is require to evaluate
docker-compose -f ./docker/docker-compose-deps.yaml up
Application provide next folder structure
src
/itest
/main
/test
Application provides next folders:
- itest - this folder contains integration tests
- main - this folder contains application code
- test - this folder contains JUnit 5 tests
Main application contains folder structure that represent (hexagonal architecture)
com.softeq.app
.domain
.services
.config
.adapters
.api
.jpa
There are list of packages:
- domain - this folder contains domain model of the application and repository interfaces
- services - this folder contains services of the application
- config - current folder contains application configurations
- adapters - current folder contains external services adapters
Project contains several base classes:
- AbstractITest - base integration test that configure context and rollback options for the tests
- AbstractRepositoryImpl - base class for queryDsl based repositories
Gradle build support next options:
-PdisableIntegrationTests
- this option allow to disable integration tests-PdisableJacoco
- this options allow to disable code coverage checks
To build the code successfully it is required > 80% code coverage! This requirement automatically checked during build by JaCoCo plugin.
MIT