Docker Java Example Series
https://github.com/ryanmckaytx/java-docker-example
In this part, I'm just going to initialize a new project. Part 2 covers Spring Web MVC testing.
Set up your dev machine
Every once in a while, like when you switch jobs and get a new laptop, you need to set up a machine for java development.
For this, I like to use sdkman. It helps install the tools you need to do java development. It also helps switch between multiple versions of those tools. I've installed java, groovy, gradle, and maven.
$ sdk c Using: gradle: 4.0 groovy: 2.4.11 java: 8u131-zulu maven: 3.5.0
Create a new project
There are a few good ways to do this. The typical way I do this is to copy another project. Within an organization, or at least within a team, there is typically some amount of infrastructure and institutional knowledge built into existing projects that you want in a new project. But for this project, I wanted to practice starting completely from scratch. There are a couple of good options.Gradle init
I like gradle as a build tool, and gradle has a built in project initializer. It supports a few project archtypes, including pom (converting a maven project to gradle), java library, and java application. It even explicitly supports spock testing framework.
$ gradle init --type java-application --test-framework spock BUILD SUCCESSFUL in 0s 2 actionable tasks: 2 executed $ tree . |____build.gradle |____gradle | |____wrapper | | |____gradle-wrapper.jar | | |____gradle-wrapper.properties |____gradlew |____gradlew.bat |____settings.gradle |____src | |____main | | |____java | | | |____App.java | |____test | | |____groovy | | | |____AppTest.groovy
You can see it also generates a demo App and AppTest.
Spring Boot Initializr
For Spring Boot apps, Spring provides the Spring Boot Initializr. This lets you choose from a curated (but extensive) set of options and dependencies, and then generates a project in a zip file for download. Similarly to gradle init, it includes a default basic app and test.
$ unzip demo.zip Archive: demo.zip creating: demo/ inflating: demo/gradlew creating: demo/gradle/ creating: demo/gradle/wrapper/ creating: demo/src/ creating: demo/src/main/ creating: demo/src/main/java/ creating: demo/src/main/java/net/ creating: demo/src/main/java/net/ryanmckay/ creating: demo/src/main/java/net/ryanmckay/demo/ creating: demo/src/main/resources/ creating: demo/src/main/resources/static/ creating: demo/src/main/resources/templates/ creating: demo/src/test/ creating: demo/src/test/java/ creating: demo/src/test/java/net/ creating: demo/src/test/java/net/ryanmckay/ creating: demo/src/test/java/net/ryanmckay/demo/ inflating: demo/.gitignore inflating: demo/build.gradle inflating: demo/gradle/wrapper/gradle-wrapper.jar inflating: demo/gradle/wrapper/gradle-wrapper.properties inflating: demo/gradlew.bat inflating: demo/src/main/java/net/ryanmckay/demo/DemoApplication.java inflating: demo/src/main/resources/application.properties inflating: demo/src/test/java/net/ryanmckay/demo/DemoApplicationTests.java
Pretty much the only thing I don't like here is that the test isn't spock and there doesn't seem to be a way to choose it. Not a big deal, its easy to change afterward. I went with initializr for this project.
JHipster
JHipster is an opinionated full-stack project generator for Spring Boot + Angular apps. It has a lot of features that I want to explore later, so for now I stuck with Spring Boot Initializr.
No comments:
Post a Comment