refactored acs-share RAD

This commit is contained in:
2021-06-28 21:26:48 -04:00
parent c6df90008f
commit 585b2cf745
12 changed files with 501 additions and 77 deletions

9
beedk-acs-share-rad-tile/.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
# Eclipse
.project
.classpath
.settings
# Maven
pom.xml.versionsBackup
target

View File

@@ -0,0 +1,82 @@
# BeeDK Abstract ACS Share Maven Tile for RAD
This is a component within the proposed [BeeDK](/inteligr8/ootbee-beedk). It is considered to be part of the **Private API** of the BeeDK.
## Purpose
This project creates a [Maven Tile](https://github.com/repaint-io/maven-tiles) that provides the basis for rapid application development of any ACS Share module, extension, service, or web application. It is intended to be used by other BeeDK components and not directly by any development project.
## Usage
To use this plugin, just reference it with the Maven Tiles plugin as shown in the following snippet. Do not forget the `extensions` element in the *plugin* configuration.
```xml
<project ...>
...
<build>
...
<plugins>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>[2.0,3.0)</version>
<extensions>true</extensions>
<configuration>
<tiles>
...
<!-- Documentation: https://bitbucket.org/inteligr8/ootbee-beedk/src/stable/beedk-acs-share-rad-tile -->
<tile>com.inteligr8.ootbee:beedk-acs-share-rad-tile:[1.0.0,2.0.0)</tile>
</tiles>
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
```
See the [BeeDK documentation](/inteligr8/ootbee-beedk) on instructions for how to start and stop RAD capabilities.
## Configuration
In your Maven project, set the following properties to define the behavior of this Maven Tile. Unless otherwise stated, they can only be overridden in the project POM or other Maven Tiles loaded earlier than this Maven Tile.
### Public API
The following properties are intended to be exposed by inheriting Public API Maven Tiles.
| Maven Property | Required | Default | Description |
| -------------------------- |:--------:| --------------- | ----------- |
| `acs-share.hotswap.enabled` | | true | Enable the HotSwap Agent for live classpath reloading. |
| `acs-share.hotswap.disablePlugins` | | | Do not enable the HotSwap Agent with the following plugins. All plugins are documented here: https://github.com/HotswapProjects/HotswapAgent/tree/master/plugin |
| `acs-share.debugger.enabled` | | true | Enable the JDWP debugger. |
| `acs-share.port` | | 8180 | The port to expose on `localhost` for the developer; not for other applications or users. |
| `acs-share.debugger.port` | | 8100 | The port to expose on `localhost` for the developer; not for other applications or users. |
| `acs-share.tomcat.opts` | | | Additional `CATALINA_OPTS` to add to the Apache Tomcat startup.<br/>*May be overridden by any POM parent or Maven Tile.* |
| `acs-share.timeout` | | 30000 | The time to wait for the startup to complete, in milliseconds. |
| `tomcat-rad.version` | | *not important* | The version of the [Apache Tomcat Rapid Application Development Docker container](/inteligr8/tomcat-rad-docker). |
### Private API
The following properties are only intended to be defined by BeeDK components.
| Maven Property | Required | Default | Description |
| ------------------------------------ |:--------:| ------------------ | ----------- |
| `beedk.deploy.share.warFile` | **Yes** | | The WAR file to deploy in the Apache Tomcat instance. |
| `beedk.deploy.share.classesDirectory` | | | An additional classpath directory to sideload into the web application. |
| `beedk.deploy.share.testClassesDirectory` | | | An additional test classpath directory to sideload into the web application. |
| `beedk.deploy.share.extDirectory` | | | An additional directory of JARs to sideload into the web application. |
| `beedk.deploy.share.webDirectory` | | | An additional directory of web resources to sideload in the web application. |
| `beedk.deploy.share.warDirectory` | | `${project.build.warDirectory}` | A build directory for WAR files. |
### Other APIs
Additional less important configurations are inherited from the following Maven Tiles.
* [`beedk-run-tile`](/inteligr8/ootbee-beedk/src/stable/beedk-run-tile)
## Results
The ACS Share will be started during the `process-classes` Maven phase.

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.inteligr8.ootbee</groupId>
<artifactId>beedk-acs-share-rad-tile</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>tile</packaging>
<name>Order of the Bee Development Kit: RAD for ACS Share</name>
<scm>
<url>https://bitbucket.org/inteligr8/ootbee-beedk</url>
</scm>
<organization>
<name>Order of the Bee</name>
<url>https://orderofthebee.net</url>
</organization>
<developers>
<developer>
<name>Brian Long</name>
<email>brian@inteligr8.com</email>
<organization>Inteligr8</organization>
<organizationUrl>https://www.inteligr8.com</organizationUrl>
<url>https://twitter.com/brianmlong</url>
</developer>
</developers>
<build>
<plugins>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.20</version>
<extensions>true</extensions>
<configuration>
<filtering>true</filtering>
<tiles>
<tile>com.inteligr8:maven-public-deploy-tile:[1.0.0,2.0.0)</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://tiles.bluetrainsoftware.com/maven/tiles/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tiles.bluetrainsoftware.com/maven/tiles/1.1.0 https://bitbucket.org/inteligr8/maven-tiles/raw/xsd/src/main/resources/maven-tiles.xsd">
<profiles>
<profile>
<id>rad-acs-share</id>
<activation>
<property>
<name>rad</name>
</property>
</activation>
<build>
<plugins>
<!-- Using Docker to host the web application -->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${beedk.plugins.fabric8.docker.version}</version>
<executions>
<execution>
<id>run-acs-share</id>
<phase>process-classes</phase>
<goals><goal>start</goal></goals>
<configuration>
<images>
<image>
<name>docker.inteligr8.com/inteligr8/tomcat-rad:${tomcat-rad.version}</name>
<alias>acs-share</alias>
<run>
<env>
<ENABLE_JDWP>${acs-share.debugger.enabled}</ENABLE_JDWP>
<ENABLE_HOTSWAP>${acs-share.hotswap.enabled}</ENABLE_HOTSWAP>
<DISABLE_HOTSWAP_PLUGINS>${acs-share.hotswap.disablePlugins}</DISABLE_HOTSWAP_PLUGINS>
<CATALINA_OPTS>${acs-share.tomcat.opts}</CATALINA_OPTS>
</env>
<ports>
<port>${acs-share.port}:8080</port>
<port>${acs-share.debugger.port}:8000</port>
</ports>
<network>
<mode>custom</mode>
<name>${project.artifactId}</name>
</network>
<volumes>
<bind>
<volume>${beedk.deploy.share.warFile}:/var/lib/tomcat/webapps/share.war:ro</volume>
<volume>${beedk.deploy.share.classesDirectory}:/var/lib/tomcat/dev/classes:ro</volume>
<volume>${beedk.deploy.share.modClassesDirectory}:/var/lib/tomcat/dev/classes-extra1:ro</volume>
<volume>${beedk.deploy.share.extClassesDirectory}:/var/lib/tomcat/dev/classes-extra2:ro</volume>
<volume>${beedk.deploy.share.testClassesDirectory}:/var/lib/tomcat/dev/classes-extra3:ro</volume>
<volume>${beedk.deploy.share.extDirectory}:/var/lib/tomcat/dev/lib:ro</volume>
<volume>${beedk.deploy.share.webDirectory}:/var/lib/tomcat/dev/web:ro</volume>
</bind>
</volumes>
<wait>
<http>
<url>http://localhost:${acs-share.port}/share</url>
<method>GET</method>
<status>200..399</status>
</http>
<time>${acs-share.timeout}</time>
</wait>
</run>
</image>
</images>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- allow downstream tiles to default this before this tile does -->
<profile>
<id>tomcat-opts-unspecified</id>
<activation>
<property>
<name>!acs-share.tomcat.opts</name>
</property>
</activation>
<properties>
<acs-share.tomcat.opts></acs-share.tomcat.opts>
</properties>
</profile>
<profile>
<id>default-props</id>
<activation>
<property>
<name>!some-prop-that-never-exists</name>
</property>
</activation>
<properties>
<!-- configurable -->
<beedk.deploy.share.classesDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.classesDirectory>
<beedk.deploy.share.modClassesDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.modClassesDirectory>
<beedk.deploy.share.extClassesDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.extClassesDirectory>
<beedk.deploy.share.testClassesDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.testClassesDirectory>
<beedk.deploy.share.extDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.extDirectory>
<beedk.deploy.share.webDirectory>${project.build.directory}/doesnotexist</beedk.deploy.share.webDirectory>
<beedk.deploy.share.warDirectory>${project.build.warDirectory}</beedk.deploy.share.warDirectory>
<acs-share.timeout>150000</acs-share.timeout>
<acs-share.debugger.enabled>true</acs-share.debugger.enabled>
<acs-share.hotswap.enabled>true</acs-share.hotswap.enabled>
<acs-share.hotswap.disablePlugins></acs-share.hotswap.disablePlugins>
<!-- ports -->
<acs-share.port>8180</acs-share.port>
<acs-share.debugger.port>8100</acs-share.debugger.port>
<!-- versions -->
<tomcat-rad.version>9-1.4</tomcat-rad.version>
<!-- configuring beedk-acs-webapp-artifact-tile -->
<alfresco.war.artifactId>share</alfresco.war.artifactId>
</properties>
</profile>
</profiles>
<tiles>
<!-- Documentation: https://bitbucket.org/inteligr8/ootbee-beedk/src/stable/beedk-run-tile -->
<tile>@project.groupId@:beedk-run-tile:@project.version@</tile>
</tiles>
</project>