Skip to content

Generate JVM (java, kotlin, scala) project with gradle / maven / sbt build systems and docker / docker-compose for rapid development

License

Notifications You must be signed in to change notification settings

daggerok/generator-jvm

Repository files navigation

generator-jvm NPM version Build Status Dependency Status

Generate JVM (java, kotlin, scala) project with gradle / maven build systems and docker / docker-compose for rapid development

See also

I aslo have a lot of jvm starters here, and not sure that will move all of them inside this generator

Installation

First, install Yeoman and generator-jvm using npm (we assume you have pre-installed node.js).

npm install -g yo
npm install -g generator-jvm

npm audit

It's not recommended, but if you really need, you can install npm packages without audit by using:

npm install --no-audit

Usage

Then generate your new project using command line options (name and type):

yo jvm --name my-awesom-java-project --type java
yo jvm -n spring-boot-kotlin-project -t kotlin-spring-boot
cd my-awesom-java-project

Then generate your new project using prompt:

yo jvm
# enter projectDirectory or just press enter (default: app)
# chose projectType (default: java)
cd app

using gradle

idea build.gradle
bash gradlew

using maven

idea pom.xml
bash mvnw

docker-compose

# gradle
bash gradlew composeUp
# maven
bash mvnw docker-compose:up

What's inside?

java-ee (micro-profile) project

  • java 8 based project
  • javaee 7.0 / 8.0 using thorntail (aka wildfly-swarm) micro-profile
  • support fatjar
  • support executable bash jar
  • support kotlin
  • support maven build system
  • support gradle build system (only swarm projects)
  • vavr (aka javaslang), lombok
  • support testing with junit 4 / 5
  • docker / docker-compose support

type options:

  • java-thorntail
  • java-wildfly-swarm
  • kotlin-thorntail
  • kotlin-wildfly-swarm

java-payara-micro

  • java 8 based project
  • Java / JavaEE 8
  • lombok (slf4j + logback logging)
  • support fat (uber) jar
  • support maven build system
  • support gradle build system
  • support testing with junit 5
  • docker / docker-compose support

type options:

  • java-payara-micro

akka-actor project

  • java 8 based project
  • scala 2.12
  • akka-actor 2.5.14
  • lombok (slf4j + logback logging)
  • vavr (javaslang)
  • support fatjar
  • support sbt build system
  • support maven build system
  • support gradle build system
  • support application scripts when using gradle
  • support testing with junit 4 / 5
  • docker / docker-compose support

type options:

  • java-akka-actor
  • scala-gradle-akka-actor
  • scala-sbt-akka-actor

akka-persistence project

  • java 8 based project
  • scala 2.12
  • akka-actor 2.5.14 / akka-persistence
  • support fatjar
  • support gradle build system
  • docker / docker-compose support

type options:

  • scala-gradle-akka-persistence

java-ee thymeleaf project

  • Java EE 8 based web project
  • Thymeleaf
  • JAX-RX
  • support JBOSS EAP 7.1 (docker)
  • support maven build system
  • support gradle build system
  • docker / docker-compose support

type options:

  • java-ee-thymeleaf

vertx project

  • java 8 based Vert.x web project
  • support fatjar
  • support kotlin 1.3.11
  • support maven build system
  • support gradle build system
  • docker / docker-compose support

type options:

  • java-vertx
  • kotlin-vertx

spring cloud function web project

  • java 8 based spring-cloud-function-web project
  • spring-boot 2 / spring framework 5
  • support fatjar
  • support executable bash jar
  • support kotlin 1.3.11
  • support maven build system
  • support gradle build system
  • docker / docker-compose support

type options:

  • java-spring-cloud-function-web
  • kotlin-spring-cloud-function-web

spring-boot 2 / spring framework 5 project

  • java 8 based project
  • spring-boot 2 / spring framework 5
  • support fatjar
  • support executable bash jar
  • support kotlin 1.3.11
  • support maven build system
  • support gradle build system
  • vavr (javaslang)
  • lombok (slf4j + logback logging)
  • support testing with junit 4 / 5
  • docker / docker-compose support

type options:

  • java-spring-boot
  • kotlin-spring-boot
  • java-spring-boot-2.0.x
  • kotlin-spring-boot-2.0.x

spring-boot 1 / spring framework 4 project

  • java 8 based project
  • spring-boot 1 / spring framework 4
  • support fatjar
  • support executable bash jar
  • support kotlin 1.2.71
  • support maven build system
  • support gradle build system
  • vavr (javaslang)
  • lombok (slf4j + logback logging)
  • support testing with junit 4 / 5
  • docker / docker-compose support

type options:

  • java-spring-boot-1.x
  • kotlin-spring-boot-1.x

java-ee-faces project

  • javaee 8.0 project
  • JSF using mojarrra 2.2.16 faces implementation
  • lombok (slf4j + logback logging)
  • support maven build system
  • support gradle build system
  • docker / docker-compose support (Glassfish 5.0 / JBOSS EAP 7.1)

java-ee EAR multi project

  • javaee 8.0 project
  • EAR with EJB + CDI configured
  • EAR without CDI at all, but could be easily added (java-ee-cdi-multi-project)
  • EJB3 (business services module: ejb-services)
  • EJB3 (JPA repositories module: ejb-data with embedded H2database for simplicity)
  • JAX-RS REST API
  • WEB/HTML5 static content
  • Servlet and JSP with EJB usage
  • lombok (slf4j + logback logging)
  • vavr (javaslang)
  • support maven build system
  • support gradle build system
  • docker / docker-compose support (JBOSS EAP 7.1)

type options:

  • java-ee-cdi-full-multi-project
  • java-ee-ejb-full-multi-project

java-ee project

  • java 8 based project
  • javaee 8.0
  • lombok (slf4j + logback logging)
  • vavr (javaslang)
  • support kotlin 1.3.11
  • support maven build system
  • support gradle build system
  • support testing with junit 4 / 5
  • docker / docker-compose support (JBOSS EAP 7)

type options:

  • java-ee
  • kotlin-ee

parent multi project

  • java 8 based parent multi project
  • support fatjar
  • support kotlin 1.3.11
  • support executable bash jar
  • support maven build system
  • support gradle build system
  • vavr (javaslang)
  • lombok (slf4j + logback logging)
  • support testing with junit 4 / 5
  • docker / docker-compose support

type options:

  • java-parent-multi-project
  • kotlin-parent-multi-project

simple fat project

  • java 8 based project
  • lombok (slf4j + logback logging)
  • vavr (javaslang)
  • support fatjar
  • support scala 2.12 / 2.11
  • support maven build system
  • support gradle build system
  • docker / docker-compose support
  • support application scripts when using gradle
  • support application executable scripts when using gradle
  • support testing using junit 4, scalactic, scalatest, specs2

type options:

  • java
  • kotlin
  • scala
  • scala-2.11
  • scala-sbt

Also inside all projects available

  • FindBugs maven / gradle plugins functionality ./gradlew check ./mvnw verify site
  • Ascii documentation (asciidoctor maven / gradle plugins functionality) ./gradlew asciidoctor
  • Artifact deployment (local maven repositories) ./gradlew publish ./mvnw deploy

Getting To Know Yeoman

  • Yeoman has a heart of gold.
  • Yeoman is a person with feelings and opinions, but is very easy to work with.
  • Yeoman can be too opinionated at times but is easily convinced not to be.
  • Feel free to learn more about Yeoman.

License

MIT © Maksim Kostromin