Tool | Status |
---|---|
Travis | |
Jenkins | |
Java |
Weazbootgradle is a starter Spring Boot / Angular project with many features
designed to be used with Intellij IDE.
It uses Gradle as the main build tool with Angular CLI for the frontend. It is cross platform,
travis-ci and Jenkins friendly, and loaded with multiple testing frameworks. It comes pre-configured with
Intellij IDE configuration settings so that you can get started quickly.
The entire build lifecycle for this project can be run in a single: ./gradlew build
command.
A frontend application secured by OAuth2 authorization code flow, with an example OAuth2 authentication server. The authentication server could be used in an organization, replaced by an existing service (Google, Facebook, Okta, etc), or extended to integrate with other OAuth2 providers.
It should have staples such as login, logout, backend requests, etc in addition to being fully tested and easy to scale.
In your workspace directory:
git clone https://github.com/themadweaz/weazbootgradle.git
Then open the project directly in IntelliJ IDE. Do not Import, Open. Import would work, but you would lose many of the IntelliJ IDE specific configuration features of this sample.
Once that is done, either run the ./gradlew build
from the command line or the build
Run Configuration in IntelliJ IDE.
This will pull down all dependencies, install Node.js and npm, and run the test suite.
See each module's README.md for more information about commands available.
- Load pre-configured settings for IntelliJ IDE by importing the settings jar in
$PROJECT_ROOT/config/intellij/settings-*.jar
usingFile->Import Settings...
. Use at your own risk, as this will overwrite your own IntelliJ IDE settings.
The project comes with a pretty sane Spring Boot multi-app setup. It contains a main application that serves the Angular app, and an authorization server example app. It is designed to be extended, and has classes prefixed with the word Custom which are targets for enhancement.
Instead of the basic authentication default Spring Security configuration, this project comes with an OAuth2 authentication server implementation which secures the frontend. It supports token revocation and session based logout. It follows the example by Dave Syer from this github with lots of modifications.
The default username/password is: username/password
Everything is tested using the most modern Spring Boot patterns. It has JaCoCo coverage tooling to monitor how well the application is tested. Also included is an example integration with Coveralls to record that coverage over time.
Pre-configured with Spring Developer Tools for hot-swapping classes and resources.
The build runs Checkstyle on the code base as part of the build lifecycle. It is pre-configured with a modified version of Google's checkstyle configuration. The IntelliJ IDE project is configured to be able to run this checkstyle variant from the Checkstyle IntelliJ IDE plugin. The project contains a Code Style XML configuration that matches the style rules in the checkstyle configurations. Can be easily modified as needed.
Using a few Gradle plugins, the first ./gradlew build
run will install Node.js and pull down
any npm dependencies defined in Package.json. If you already have Node.js installed, it will use your local version.
We use Grunt to help stand up the jars and then run ng test
from the Angular CLI.
Angular CLI includes tools for running both unit and end2end types of testing. More information can be found on in the Frontend README.
I will happily take pull requests. Please open an issue first!
- Users: roles, actuator for both applications
- auth store / authorize page for clients requiring authorization
- scope abstraction
- possibly saml integration
To get devtools working correctly on class changes, you need to do a few things. First, you will need to go to Settings -> Compiler
and enable the option Make Project Automatically
. Next, you will need to enable the compiler.automake.allow.when.app.running
registry setting in IntelliJ IDE.
You can access the registry in by using the shortcut Shift + Command + A
, then searching for registry
. Set this value to true
.