This is a pre-technical interview test. It demos developing a client side of a banking app.
A client:
- is entitled to an account
- has the account initialized to 0 (zero)
- can make deposits into his account
- may withdraw some or all of his savings
- print his account statement
- Java 23
- JDK for .class build and JAR packaging
- GraalVM for native build
- Maven
- Behaviour Driven Development (BDD) with Cucumber
- Test-Driven Development (TDD) with JUnit Jupiter
- Single repository
- Maven multi-module
- Bill-Of-Material (BOM) described in the root module
- Sub-modules:
- Java Platform Module System (JPMS): Each of these modules is encapsulated and secured with JPMS. JPMS provides dependency-level encapsulation, higher security and performance optimization is some cases.
Two pipelines are integrated to this project, both as GitHub Actions.
test: It is triggered by the push of a new commit on any branch. It runs tests for all the Maven modules in here (root and descendant).- Test report is available too, and you can see a badge of it at the top of this README.md
release: It is trigger by the tagging of any commit on the main branch. It leverages GraalVM to build native OS executables.
NOTE: You can even download the executable for your platform (if supported: GitHub does not support a native Linux ARM for example).
NOTE: If the download link is not working, it probably means GitHub retention policy has expired. But there is hope for you... You can fork this repository, tag the main branch et voilà!
Make sure you have Java 23 & Maven setup. (Consider GraalVM instead, if you want to make native builds).
Clone this repository:
git clone [email protected]:SalathielGenese/java-devops-refactoring.gitPosition yourself in the root directory:
cd java-devops-refactoringRun tests:
mvn clean testBuild native executable for the CLI (console):
mvn clean package -Pnative -pl console -am(Now, your executable is at ./console/target/java-devops-refactoring-console)