Engine Maven plugin
Introduction
The Engine Maven Plugin allows the Engine Management Api to be invoked as a Maven goal.
This plugin should be invoked during CI/CD or manually from the terminal/CLI during development. It sends HTTP requests to the specified engine (which must already be up and available) URL.
You will need to have set up your Development Environment.
Goals
This section describes the supported operations.
clean-engine
Cleaning invokes the clear endpoint on the engine, which clears the application contents. It provides a clean slate by removing any existing prototypes, protocols, and related data from the database.
deploy-source
Deploying invokes the deploy endpoint on the engine, which deploys NPL sources and migrations. Specify a directory from which to deploy, that contains the correct folders and files. There is no need to zip the directory, the goal will handle that.
Configuration
Properties
The following configuration properties are available:
engineManagementUrl
The base URL of the Engine Management API
Optionality
required
Goals used by
clean-engine
and deploy-source
Default Value
http://localhost:12400
authUrl
The base URL of the authentication endpoint
Optionality
required
Goals used by
clean-engine
and deploy-source
Default Value
http://localhost:11000
username
The username for the user to be used for authentication
Optionality
required
Goals used by
clean-engine
and deploy-source
password
The password for the user to be used for authentication
Optionality
required
Goals used by
clean-engine
and deploy-source
clientId
The client Id for the client to request an authentication token
Optionality
required
Goals used by
clean-engine
and deploy-source
clientSecret
The client secret for the client to request an authentication token
Optionality
optional
Goals used by
clean-engine
and deploy-source
deploymentDirectory
The directory containing NPL sources and migrations
Optionality
required
Goals used by
deploy-source
The goals correspond to the sections described in goals.
Example setup
A complete sample configuration looks as follows:
<build>
<plugins>
<plugin>
<groupId>com.noumenadigital.platform</groupId>
<artifactId>engine-maven-plugin</artifactId>
<!-- Make sure this version matches your platform version! -->
<version>2023.3.0</version>
<executions>
<execution>
<goals>
<goal>clean-engine</goal>
<goal>deploy-source</goal>
</goals>
</execution>
</executions>
<configuration>
<engineManagementUrl>http://localhost:12400</engineManagementUrl>
<authUrl>http://localhost:11000</authUrl>
<username>joe</username>
<password>secure123</password>
<clientId>an-id</clientId>
<clientSecret>secure-secret-123</clientSecret>
<deploymentDirectory>src/deploymentdir</deploymentDirectory>
</configuration>
</plugin>
</plugins>
</build>
Example directory
deploymentdir
├── kotlin-script
│ ├── migration.kts
├── npl-1.0.0
│ ├── stub.npl
└── migration.yml
Usage from terminal
You can invoke these Maven goals locally from the terminal against a local engine with the following commands
mvn clean engine:clean-engine -D<param>=<paramValue>
mvn clean engine:deploy-source -D<param>=<paramValue>
Goal prefix
In order to execute the goal with the prefix, (i.e. engine:clean-engine
) you need the following in
~/.m2/settings.xml
<pluginGroups>
<pluginGroup>com.noumenadigital.platform</pluginGroup>
</pluginGroups>
Without the prefix, you can run the goals with the fully qualified name:
mvn com.noumenadigital.platform:engine-maven-plugin:0.0.1-SNAPSHOT:clean-engine -D<param>=<paramValue>