https://github.com/forge/thorntail-addon
Thorntail Forge Addon
https://github.com/forge/thorntail-addon
Last synced: 8 months ago
JSON representation
Thorntail Forge Addon
- Host: GitHub
- URL: https://github.com/forge/thorntail-addon
- Owner: forge
- License: epl-1.0
- Created: 2015-05-08T06:49:48.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2021-04-29T19:33:56.000Z (almost 5 years ago)
- Last Synced: 2023-07-26T23:34:48.197Z (over 2 years ago)
- Language: Java
- Homepage: http://thorntail.io/
- Size: 249 KB
- Stars: 14
- Watchers: 12
- Forks: 13
- Open Issues: 4
-
Metadata Files:
- Readme: README.asciidoc
- License: LICENSE
Awesome Lists containing this project
README
:idprefix: id_
:source-highlighter: pygments
== Thorntail addon for JBoss Forge
image:https://travis-ci.org/forge/thorntail-addon.svg?branch=master["Build Status", link="https://travis-ci.org/forge/thorntail-addon"]
image:http://img.shields.io/:license-EPL-blue.svg["License", link="https://www.eclipse.org/legal/epl-v10.html"]
image:https://maven-badges.herokuapp.com/maven-central/org.jboss.forge.addon/thorntail/badge.svg["Maven Central", link="https://maven-badges.herokuapp.com/maven-central/org.jboss.forge.addon/thorntail"]
This addon provides *standalone* functionality, and *exports services* for use in other addons.
++++
++++
=== Installation
From Forge CLI:
[source,shell]
----
addon-install-from-git --url https://github.com/forge/thorntail-addon.git
----
=== Depends on
[options="header"]
|===
|Addon |Exported |Optional
|ui
|yes
|no
|projects
|yes
|no
|maven
|yes
|no
|===
== Features
Thorntail Project type::
If you are creating a new project, you can choose the `thorntail` project type directly
[source,shell]
----
[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:
+
[source,java]
----
thorntail-setup
----
+
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`:
+
[source,java]
----
[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
[source,shell]
----
[demo]$ rest-new-endpoint --named MyEndpoint
***SUCCESS*** JAX-RS has been installed.
***SUCCESS*** REST org.demo.rest.MyEndpoint was created
[MyEndpoint.java]$ thorntail-detect-fractions --depend --build
----
List Fractions::
This will list all the available fractions
[source,shell]
----
[MyEndpoint.java]$ 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.io)
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/config.properties` file and will use that version permanently.
IMPORTANT: 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.
[source, shell]
----
thorntail-new-test --target-package org.example.rest --named HelloWorldEndpointTest
***SUCCESS*** Test Class org.example.rest.HelloWorldEndpointTest was created
[HelloSwarm]$ cd src/test/java/org/example/rest/HelloWorldEndpointTest.java
[HelloWorldEndpointTest.java]$ cat -c .
package org.example.rest;
import org.junit.runner.RunWith;
import org.jboss.arquillian.junit.Arquillian;
import org.wildfly.swarm.arquillian.DefaultDeployment;
import org.junit.Test;
@RunWith(Arquillian.class)
@DefaultDeployment
public class HelloWorldEndpointTest {
@Test
public void should_start_service() {
}
}
----
Run::
Builds and executes the current project (in command line mode only so far) and will block the UI until Ctrl+C is pressed.
[source,shell]
----
[Main.java]$ thorntail-run
----