Skip to content
Go to file
Cannot retrieve contributors at this time
236 lines (201 sloc) 12.1 KB

Thorntail addon for JBoss Forge

Build Status License Maven Central

This addon provides standalone functionality, and exports services for use in other addons.


From Forge CLI:

addon-install-from-git --url

Depends on

Addon Exported Optional











Thorntail Project type

If you are creating a new project, you can choose the thorntail project type directly

[tmp]$ project-new --named demo --type thorntail --stack JAVA_EE_7
***SUCCESS*** Project named 'demo' has been created.
***SUCCESS*** Stack 'Java EE 7' installed in project
***SUCCESS*** Thorntail is now set up! Enjoy!
Setup command

If you’re working in an existing project (or you forgot to choose thorntail in the command above) just type wildfly-swarm-setup if you’re in shell. It should read Thorntail: Setup if you’re in a GUI environment:


And that’s it! The thorntail-maven-plugin will be installed.

Add Fraction

You can install Thorntail Fractions by using the command thorntail-add-fraction:

[demo]$ thorntail-add-fraction --fractions
asciidoctorj                  fluentd                       jaxrs-validator               keycloak-server               microprofile-opentracing      spring
batch-jberet                  flyway                        jca                           logging                       microprofile-restclient       swagger
bean-validation               full                          jdr                           logstash                      mod_cluster                   swagger-webapp
cassandra                     hibernate-search              jgroups                       mail                          mongodb                       topology-consul
cdi                           hibernate-validator           jmx                           management                    monitor                       topology-jgroups
cdi-config                    hystrix                       jolokia                       management-console            mvc                           topology-openshift
cdi-jaxrsapi                  infinispan                    jose                          messaging                     neo4j                         topology-webapp
cli                           jaeger                        jpa                           microprofile                  opentracing                   transactions
datasources                   javafx                        jpa-eclipselink               microprofile-config           orientdb                      undertow
drools-server                 jaxrs                         jpa-spatial                   microprofile-fault-tolerance  remoting                      vertx
ee-security                   jaxrs-jaxb                    jsf                           microprofile-health           resource-adapters             web
ejb                           jaxrs-jsonb                   jsonb                         microprofile-jwt              ribbon                        webservices
ejb-remote                    jaxrs-jsonp                   jsonp                         microprofile-metrics          ribbon-secured                zipkin-jaxrs
elytron                       jaxrs-multipart               keycloak                      microprofile-openapi          ribbon-secured-client

You can choose any fraction you want to install. Installed fractions are not listed.

Detect Fractions

This will run a fraction analyzer algorithm and list the missing fractions. You can add them to your project by specifying the --depend parameter

[demo]$ rest-new-endpoint --named MyEndpoint
***SUCCESS*** JAX-RS has been installed.
***SUCCESS*** REST was created

[]$ thorntail-detect-fractions --depend --build
List Fractions

This will list all the available fractions

[]$ thorntail-list-fractions
asciidoctorj: AsciidoctorJ (AsciidoctorJ is the official library for running Asciidoctor on the JVM. Using AsciidoctorJ, you can convert AsciiDoc content or analyze the structure of a parsed AsciiDoc document from Java and other JVM languages.)
batch-jberet: Batch (Java EE Batch with JBeret)
bean-validation: Bean Validation (Define constraints on object models with annotations)
cassandra: Cassandra (Cassandra integration)
cdi: CDI (CDI with Weld)
cdi-config: CDI Configuration (CDI Configuration)
cdi-jaxrsapi: CDI JAX-RS API Enhancements (Generates implementation of external service from interface which can then be injected to call that service.)
cli: JBoss CLI (JBoss CLI)
datasources: Datasources (Datasources for installing database drivers, etc)
drools-server: Drools Server (Drools Server)
ee-security: EE Security (EE Security API support)
ejb: EJB (Use EJBs in your application)
ejb-remote: EJB Remote (Access EJBs in remote containers)
elytron: Elytron (Elytron)
fluentd: Fluentd (Write log entries to Fluentd)
flyway: Flyway (Evolve your Database Schema easily and reliably across all your instances)
full: Full (Equivalent to Full Platform)
hibernate-search: Hibernate Search (Hibernate Search transparently indexes your objects and offers fast regular, full-text and geolocation search. Ease of use and easy clustering are core.)
hibernate-validator: Hibernate Validator (Validation annotations going beyond Bean Validation)
hystrix: Hystrix (Latency and Fault Tolerance, such as Circuit Breaker, with Hystrix from Netflix OSS)
infinispan: Infinispan (Distributed in-memory key/value store)
jaeger: Jaeger (Jaeger integration, including the OpenTracing fraction)
javafx: JavaFX (For using JavaFX classes in your application.)
jaxrs: JAX-RS (RESTful Web Services with RESTEasy)
jaxrs-jaxb: JAX-RS with JAXB (Add JAXB binding support for RESTful services)
jaxrs-jsonb: JAX-RS with JSON-B (Enable JSON-B interchange format for RESTful services)
jaxrs-jsonp: JAX-RS with JSON-P (Enable JSON-P interchange format for RESTful services)
jaxrs-multipart: JAX-RS with Multipart (Multipart support for RESTful services)
jaxrs-validator: JAX-RS with Validation (Validation support for RESTful services)
jca: JCA (Java EE Connector Architecture)
jdr: JBoss Diagnostic Reporting (Enables the gathering of diagnostic data for use in remote analysis of error conditions. Although the data is in a simple format and could be useful to anyone, primarily useful for JBoss EAP subscribers who would provide the data to Red Hat when requesting support)
jgroups: JGroups (Reliable messaging for creating a cluster)
jmx: JMX (Expose resources as MBeans)
jolokia: Jolokia (Deploys the jolokia.war to activate JMX-HTTP bridge as an alternative to JSR-160 connectors)
jose: JOSE Signing and Encryption Support (Supports JWS signing and JWE encryption)
jpa: JPA (Java Persistence API with Hibernate and H2 datasource)
jpa-eclipselink: JPA EclipseLink (Java Persistence API with EclipseLink)
jpa-spatial: JPA Spatial Extensions (Java Persistence API with Spatial Extensions)
jsf: JSF (Java Server Faces for developing UIs)
jsonb: JSON-B (JSON-B)
jsonp: JSON-P (JSON-P)
keycloak: Keycloak (Securing your RESTful services)
keycloak-server: Keycloak Server (Running Keycloak in an uber jar)
logging: Logging (Customizing the Logging for WildFly)
logstash: Logstash (Write log entries to Logstash for use in ELK stack)
mail: Mail (Java Mail API for messaging)
management: Management (Enables WildFly management capabilities)
management-console: Management Console (UI to manage a running WildFly/Swarm server)
messaging: Messaging (JMS Messaging with ActiveMQ)
microprofile: MicroProfile (Implementation of
microprofile-config: MicroProfile Config (WildFly: Swarm Fraction for Eclipse MicroProfile Config)
microprofile-fault-tolerance: MicroProfile Fault Tolerance (WildFly: Swarm Fraction for Eclipse MicroProfile Fault Tolerance)
microprofile-health: MicroProfile Health (Health endpoints for your application)
microprofile-jwt: MicroProfile JWT RBAC Auth (An implementation of the MP-JWT authentication and authorization)
microprofile-metrics: MicroProfile Metrics (Metrics export for MicroProfile)
microprofile-openapi: MicroProfile OpenAPI (An implementation of the MP-OpenAPI specification first introduced in MP 1.3)
microprofile-opentracing: MicroProfile OpenTracing (OpenTracing integration for Microprofile)
microprofile-restclient: MicroProfile Rest Client (Build Parent to bring in required dependencies)
mod_cluster: Modcluster (Modcluster support)
mongodb: MongoDB (MongoDB integration)
monitor: Monitor (Health endpoints for your application)
mvc: MVC (MVC 1.0 with Ozark for developing Web UIs)
neo4j: Neo4j (Neo4j integration)
opentracing: OpenTracing (OpenTracing integration via TraceResolver and GlobalTracer)
orientdb: OrientDB (OrientDB integration)
remoting: Remoting (Connecting to remote containers)
resource-adapters: Resource Adapters (Resource Adapters deployed with .rar files)
ribbon: Ribbon (Client side load balancing with Netflix Ribbon)
ribbon-secured: Ribbon Secured (Provides security token propagation across invocations when using Netflix Ribbon and Keycloak)
ribbon-secured-client: Ribbon Secured Client (Ribbon Secured Client)
spring: Spring WebMVC (RESTful services with Spring WebMVC)
swagger: Swagger (Generate swagger.json for all JAX-RS endpoints in your application)
swagger-webapp: Swagger Webapp (UI for Swagger to visualize the generated swagger.json)
topology-consul: Hashicorp Consul (Service Discovery with Hashicorp Consul)
topology-jgroups: JGroups Topology (Utilizes JGroups as a Service Registry that is discoverable)
topology-openshift: OpenShift (Service Discovery with OpenShift)
topology-webapp: Topology UI (Server-Sent Events of instances being added/removed from cluster)
transactions: Transactions (JTA distributed transactions with Narayana)
undertow: Undertow (Servlet Container with Undertow)
vertx: Vert.x (Deploys the Vert.x JCA Adapter)
web: Web (Equivalent to Web Profile)
webservices: Web Services (Web Services with CXF)
zipkin-jaxrs: Zipkin - JAXRS Support (Enables the zipkin instrumentation for JAX-RS resources)
Change Version

Changes the Thorntail version in the addon. Subsequent project creation using the project-new command would use the version specified by this command instead. The permanent flag will add a thorntail.version property in your ~/.forge/ file and will use that version permanently.

This command does not perform any change to the current project.
Create Test Class

Creates a Java Test Class and adds Arquillian Thorntail dependency. This test uses the @DefaultDeployment deployment approach and in case of specifying the flag asClient it also enriches your test with current URL.

thorntail-new-test --target-package --named HelloWorldEndpointTest
***SUCCESS*** Test Class was created
[HelloSwarm]$ cd src/test/java/org/example/rest/
[]$ cat -c .

import org.junit.runner.RunWith;
import org.jboss.arquillian.junit.Arquillian;
import org.wildfly.swarm.arquillian.DefaultDeployment;
import org.junit.Test;

public class HelloWorldEndpointTest {

	public void should_start_service() {

Builds and executes the current project (in command line mode only so far) and will block the UI until Ctrl+C is pressed.

[]$ thorntail-run
You can’t perform that action at this time.