Plugin Documentation

This report describes goals, parameters details, requirements and sample usage of this plugin.

Goals

Goals available for this plugin:

Goal Description
ep:administer-nodes

Administer nodes

Example use in pom.xml:

pom
ep:check-testcases

Check for test cases.

If no test cases are found, testCasesFound property is set to true so that nodes are not started or stopped.

ep:compile-eventflow-fragment

Compile EventFlow modules.

Compilation includes copying the source files to the output directory.

ep:compile-liveview-fragment

Compile LiveView.

Compilation includes copying the source files to the output directory

ep:deploy-fragment

Deploy an application fragment

Example use in pom.xml:

pom

A liveview fragment requires fragmentType, target and project set:

pom
ep:generate-main-eventflow

Typecheck EventFlows and generate java sources

The plugin will scan the configured EventFlow source directories and typecheck/build them in the dependency order, reporting any typecheck failure.

It does not build the generated java sources, this is done using a standard maven compiler plugin execution.

The plugin keeps track of individual SBAPP/SBINT dependencies and will trigger or skip a a rebuild accordingly.

SBAPPs and SBINTs have public interfaces and private implementation details. The public interface is composed of anything that another SBAPP/SBINT can import. Schemas, Streams, QueryTable, Constants are part of the public interface. Everything else (Module operators, etc) is private.

If an EventFlow A depends on another EventFlow B and A and B are in the same fragment, then, upon a change on B's public interface, the plugin will rebuild B, then A. Upon a change on B's implementation only, the plugin will only rebuild B.

If an EventFlow A depends on another EventFlow B and A and B are in different fragments, the plugin will only trigger a rebuild of A if the rebuild of B has happened and is installed in the maven repository (i.e. if the fragment containing B has been rebuilt successfully).

EventFlow builds are shared between Studio and the Maven command line. A fragment built using the command line will not get rebuilt by Studio and vice-versa. A Maven clean or the removal of the default *target* directory will force a rebuild on the next call.

ep:generate-test-eventflow

Typecheck EventFlows and generate java sources

The plugin will scan the configured EventFlow source and test directories and typecheck/build them in the dependency order, reporting any typecheck failure.

It does not build the generated java sources, this is done using a standard maven compiler plugin execution.

See GenerateEventFlowSourceMojo for more information (only differs from the list of scanned directories).

ep:help Display help information on ep-maven-plugin.
Call mvn ep:help -Ddetail=true -Dgoal=<goal-name> to display parameter details.
ep:install-product

Install product zip and tgz artifacts if not already installed.

This goal scans through the project dependencies and if a product zip or tgz artifact is not installed, it is installed into the $TIBCO_EP_HOME directory.

Dependencies with scope provided are skipped.

A markersDirectory is used to track if the artifact has already been installed - hence manually removing this directory will cause the artifacts to be re-installed. This directory is only created if there is a need to install an artifact.

To detect a manual installation of the product, a file specified by productValidationFile is used. If this file exists, then the product installation is not attempted.

If the plugin does install a zip, then an md5 sum of the original zip is saved - this allows installation of a newer version of the zip at a later time. This can happen with SNAPSHOTS.

ep:package-application

Build an application zip archive.

The packaging rules are as follows :-

  1. A mainifest file is created at /META-INF/MANIFEST.MF containing :-
    • Archiver-Version: Plexus Archiver
    • Built-By: build user
    • Build-Jdk: jdk version
    • Package-Title: project groupId and name
    • Package-Version: project version and buildNumber
    • Package-Vendor: project organization name (if set)
    • TIBCO-EP-Application-Format-Version: 1
    • TIBCO-EP-Build-Product-Version: product version
  2. pom.xml copied to /META-INF/maven/groupId/artifactId/pom.xml
  3. pom.properties created in /META-INF/maven/groupId/artifactId/pom.properties
  4. Discovered application definition file is copied into /META-INF/application.conf
  5. The project's resourcedirectory/artifactId/ files are copied to /app-config/fragmentname/
  6. The project's resourcedirectory/groupId-artifact/ files are copied to /app-config/fragmentname/
  7. The project's resourcedirectory/groupId-artifact-version/ files are copied to /app-config/fragmentname/
  8. Remaining resource files are copied into /
  9. Dependent fragments are copied into /

The plexus archiver is used to create the archive via the maven assembly plugin.

The generated filename is <artifactId>-<version>-ep-application.zip

ep:package-eventflow-fragment

Build a EventFlow fragment zip archive.

The packaging rules are as follows :-

  1. A mainifest file is created at /META-INF/MANIFEST.MF containing :-
    • Archiver-Version: Plexus Archiver
    • Built-By: build user
    • Build-Jdk: jdk version
    • Package-Title: project groupId and name
    • Package-Version: project version and buildNumber
    • Package-Vendor: project organization name (if set)
    • TIBCO-EP-Build-Product-Version: product version
  2. pom.xml copied to /META-INF/maven/groupId/artifactId/pom.xml
  3. pom.properties created in /META-INF/maven/groupId/artifactId/pom.properties
  4. The project's sbapp/ssql files are copied into /modules, maintaining any sub directories
  5. The project's java classes and jar dependencies are copied into /java-resources
  6. The project's resources files are copied into /
  7. Application files are compiled if possible

The plexus archiver is used to create the archive via the maven assembly plugin.

Native archives (nar) are included - in this case a mapping is included from the nar AOL values (http://maven-nar.github.io/aol.html) to internal values.

The generated filename is <artifactId>-<version>-ep-eventflow-fragment.zip

ep:package-java-fragment

Build a java fragment zip archive.

The packaging rules are as follows :-

  1. A mainifest file is created at /META-INF/MANIFEST.MF containing :-
    • Archiver-Version: Plexus Archiver
    • Built-By: build user
    • Build-Jdk: jdk version
    • Package-Title: project groupId and name
    • Package-Version: project version and buildNumber
    • Package-Vendor: project organization name (if set)
    • Main-Class: mainClass parameter (if set)
    • TIBCO-EP-Build-Product-Version: product version
  2. pom.xml copied to /META-INF/maven/groupId/artifactId/pom.xml
  3. pom.properties created in /META-INF/maven/groupId/artifactId/pom.properties
  4. The project's built java classes files are copied into /classes
  5. The project's resource files are copied into /
  6. Java runtime dependencies are copied into /dependencies/java/

The plexus archiver is used to create the archive via the maven assembly plugin.

Native archives (nar) are included - in this case a mapping is included from the nar AOL values (http://maven-nar.github.io/aol.html) to internal values.

The generated filename is <artifactId>-<version>-ep-java-fragment.zip

ep:package-liveview-fragment

Build a LiveView fragment

The packaging rules are as follows :-

  1. A mainifest file is created at /META-INF/MANIFEST.MF containing :-
    • Archiver-Version: Plexus Archiver
    • Built-By: build user
    • Build-Jdk: jdk version
    • Package-Title: project groupId and name
    • Package-Version: project version and buildNumber
    • Package-Vendor: project organization name (if set)
    • TIBCO-EP-Build-Product-Version: product version
  2. pom.xml copied to /META-INF/maven/groupId/artifactId/pom.xml
  3. pom.properties created in /META-INF/maven/groupId/artifactId/pom.properties
  4. The project's files are copied into /
  5. The project's java classes and jar dependencies are copied into /java-resources
  6. The project's resources files are copied into /

The plexus archiver is used to create the archive via the maven assembly plugin.

Native archives (nar) are included - in this case a mapping is included from the nar AOL values (http://maven-nar.github.io/aol.html) to internal values.

The generated filename is <artifactId>-<version>-ep-liveview-fragment.zip

ep:package-sw-fragment

Build a Streaming Web flow fragment

The packaging rules are as follows :-

  1. A mainifest file is created at /META-INF/MANIFEST.MF containing :-
    • Archiver-Version: Plexus Archiver
    • Built-By: build user
    • Build-Jdk: jdk version
    • Package-Title: project groupId and name
    • Package-Version: project version and buildNumber
    • Package-Vendor: project organization name (if set)
    • TIBCO-EP-Build-Product-Version: product version
  2. pom.xml copied to /META-INF/maven/groupId/artifactId/pom.xml
  3. pom.properties created in /META-INF/maven/groupId/artifactId/pom.properties
  4. The project's files are copied into /
  5. The project's java classes and jar dependencies are copied into /java-resources
  6. The project's resources files are copied into /

The plexus archiver is used to create the archive via the maven assembly plugin.

Native archives (nar) are included - in this case a mapping is included from the nar AOL values (http://maven-nar.github.io/aol.html) to internal values.

The generated filename is <artifactId>-<version>-ep-sw-fragment.zip

ep:set-resources

Set resources

ep:start-nodes

Install and start nodes.

Nodes are installed one at a time but started in parallel.

If a node directory already exists, stop and remove nodes is called first. If the directory still exists, it is deleted.

Example use in pom.xml:

pom
ep:stop-nodes

Stop and remove nodes.

When executed in clean phase, any errors found will be logged but won't cause the build to fail. When executed in a phase other than clean, a stop failure will fail the build.

ep:test-eventflow-fragment

Test a EventFlow fragment using sbunit.

A java runner for surefire is created and deployed to the test nodes - this runner invokes surefire and hence junit to run the test cases.

The java runner takes the configured reportsDirectory property and appends the node name - the node specific test report files are created in this directory. When all the test have finished, these node specific test reports are renamed into the configured reportsDirectory directory.

The maven property jenkins.executionId.reportsDirectory is set so that jenkins can locate the test reports.

Java assertions are always enabled. Options file is always ignored.

The following system properties are set :

  • com.tibco.ep.dtm.fragment.version - fragment version
  • com.tibco.ep.dtm.fragment.identifier - fragment identifier

Nodes are terminated on unit test failure, unless skipStop is set.

ep:test-java-fragment

Test a java fragment using junit and surefire.

A java runner for surefire is created and deployed to the test nodes - this runner invokes surefire and hence junit to run the test cases.

The java runner takes the configured reportsDirectory property and appends the node name - the node specific test report files are created in this directory. When all the test have finished, these node specific test reports are renamed into the configured reportsDirectory directory.

The maven property jenkins.executionId.reportsDirectory is set so that jenkins can locate the test reports.

Java assertions are always enabled. Options file is always ignored.

The following system properties are set :

  • com.tibco.ep.dtm.fragment.version - fragment version
  • com.tibco.ep.dtm.fragment.identifier - fragment identifier

Nodes are terminated on unit test failure, unless skipStop is set.

ep:test-liveview-fragment

Test a LiveView fragment using sbunit.

A java runner for surefire is created and deployed to the test nodes - this runner invokes surefire and hence junit to run the test cases.

The java runner takes the configured reportsDirectory property and appends the node name - the node specific test report files are created in this directory. When all the test have finished, these node specific test reports are renamed into the configured reportsDirectory directory.

The maven property jenkins.executionId.reportsDirectory is set so that jenkins can locate the test reports.

Java assertions are always enabled. Options file is always ignored.

The following system properties are set :

  • com.tibco.ep.dtm.fragment.version - fragment version
  • com.tibco.ep.dtm.fragment.identifier - fragment identifier

Nodes are terminated on unit test failure, unless skipStop is set.

ep:unpack-fragment

Unpack any fragment archives listed in dependences.

Eventflow fragments are extracted into eventflow subdirectory of the build directory ( default target/eventflow ) so they are not included onto the fragment zip.

Files are not overwritten.

ep:unpack-nar

Unpack any nar (native archive) archives listed in dependences.

Nar archives are extracted into the build nar directory and are included on the java library path when running unit tests and native libraries are included in the fragment.

System Requirements

The following specifies the minimum requirements to run this Maven plugin:

Maven 3.8.8
JDK 17

System Requirements History

The following specifies the minimum requirements to run this Maven plugin for historical versions:

Plugin Version Maven JDK
2.2.1 - 17

Usage

You should specify the version in your project's plugin configuration:

<project>
  ...
  <build>
    <!-- To define the plugin version in your parent POM -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.tibco.ep</groupId>
          <artifactId>ep-maven-plugin</artifactId>
          <version>2.2.1</version>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    <!-- To use the plugin goals in your POM or parent POM -->
    <plugins>
      <plugin>
        <groupId>com.tibco.ep</groupId>
        <artifactId>ep-maven-plugin</artifactId>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

For more information, see "Guide to Configuring Plug-ins"