Code Monkey home page Code Monkey logo

daggerok / generator-jvm Goto Github PK

View Code? Open in Web Editor NEW
40.0 5.0 16.0 1.82 MB

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

Home Page: https://www.npmjs.com/package/generator-jvm

License: MIT License

JavaScript 3.39% Java 51.76% HTML 3.84% Kotlin 3.85% Scala 5.06% Shell 11.58% Batchfile 0.10% CSS 0.02% Dockerfile 20.33% TSQL 0.07%
jvm java kotlin scala spring-boot java-ee akka akka-persistence spring-boot-2 wildfly-swarm

generator-jvm's Introduction

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

generator-jvm's People

Contributors

daggerok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

generator-jvm's Issues

Fix ExceptionMapper in java-wildfly-swarm

@Slf4j
@Provider
public class JaxRsExceptionMapper implements ExceptionMapper<Throwable> {

  @Context UriInfo uriInfo;

  static final Function3<UriInfo, String, String, String> url = (uriInfo, method, path) -> {
    Try<URL> tryUrl = Try.of(() -> uriInfo.getBaseUriBuilder()
                                          .build()
                                          .toURL());
    if (tryUrl.isFailure()) return format("%s %s", method, path);
    URL url = tryUrl.get();
    return format("%s %s://%s%s", method, url.getProtocol(), url.getAuthority(), path);
  };

  public Response toResponse(final Throwable e) {
    final String error = format("%s: %s", e.getClass().getSimpleName(), e.getLocalizedMessage());
    //log.error("handling fallback: {}", error, e);
    log.error("handling fallback: {}", error);

    final JsonArray resources = Json.createArrayBuilder()
                                    .add(url.apply(uriInfo, "GET", "/api/v1/hello"))
                                    .add(url.apply(uriInfo, "GET", "/api/v1/hello/{uuid}"))
                                    .build();

    return Response.status(BAD_REQUEST)
                   .entity(Json.createObjectBuilder()
                               .add("error", error)
                               .add("links", resources)
                               .build())
                   .build();
  }
}

Use this generator in node script

Hi,

I'm trying to use this generator in node script to create an atom package. I search and i find this solution :
var yeoman = require('yeoman-environment'); var env = yeoman.createEnv();

But when I run my function I have this error :
TypeError: console.Console is not a constructor

What am I doing wrong ?

Some functions get called twice

I think this group (and the following group) of functions will get called twice because of the way yeoman automatically calls methods even if they aren't part of the core (writing, initializing, etc). I think they should either be declared private (i.e. _privateCopyCommons()) or not called explicitly here as they'll be called later on in processing.

I'm brand new to yeoman, though, so please close this if I'm missing something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.