Maven Plugin
The esmf-aspect-model-maven-plugin
wraps the functionality provided by the ESMF SDK. Each piece of
supported functionality is implemented as a goal. As such, developers can easily work with Aspect
Models in the build of their maven projects to, for example, generate code from an Aspect Model.
To include the plugin, use the following dependency:
<dependency>
<groupId>org.eclipse.esmf</groupId>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<version>2.9.7</version>
</dependency>
The current implementation of the esmf-aspect-model-maven-plugin uses the
FileSystemStrategy to resolve Aspect Models. See
Understanding Model Resolution for
more information.
|
Validating an Aspect Model
The validate
goal validates whether a given Aspect Model adheres to the SAMM. The default life cycle phase for the goal is validate
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>validate-aspect-model</id>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Print detailed validation messages |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
Generate Java Code for an Aspect Model
Generate Domain Classes
The generateJavaClasses
goal generates Java domain classes (POJOs) for a given Aspect Model. The
default life cycle phase for the goal is generate-sources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-java-classes</id>
<goals>
<goal>generateJavaClasses</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated Java files will be written to. |
|
none |
|
|
The package name for the generated Java files. This may also
include the placeholders |
|
The namespace of the given Aspect Model. |
|
|
A regular expression that determines which parts
of the namespace should be removed, to remove for example common prefixes which
are replaced using |
|
none |
|
|
The path and name of the velocity template file containing the macro library. See Providing Custom Macros for Code Generation. |
|
none |
|
|
Execute the macros provided in the velocity macro library. |
|
|
|
|
Leads to generated Java code that does not contain Jackson annotations. |
|
|
|
|
Skip execution of plugin and generation |
|
|
Generate Static Meta Classes
The generateStaticJavaClasses
goal generates static meta classes for a given Aspect Model. The
default life cycle phase for the goal is generate-sources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-static-java-classes</id>
<goals>
<goal>generateStaticJavaClasses</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated Java files will be written to. |
|
none |
|
|
The package name for the generated Java files. This may also
include the placeholders |
|
The namespace of the given Aspect Model. |
|
|
A regular expression that determines which parts
of the namespace should be removed, to remove for example common prefixes which
are replaced using |
|
none |
|
|
The path and name of the velocity template file containing the macro library. See Providing Custom Macros for Code Generation. |
|
none |
|
|
Execute the macros provided in the velocity macro library. |
|
|
Generate a JSON Schema for an Aspect Model
The generateJsonSchema
goal generates a JSON Schema for a given Aspect Model. The default life
cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-json-schema</id>
<goals>
<goal>generateJsonSchema</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated JSON Schema will be written to. |
|
none |
|
|
The language from the model for which a JSON Schema should be generated. |
|
en |
Generate an OpenAPI Specification from an Aspect Model
The generateOpenApiSpec
goal generates an OpenAPI Specification for a given Aspect Model. The
default life cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-openapi-spec</id>
<goals>
<goal>generateOpenApiSpec</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<aspectApiBaseUrl>http://example.com</aspectApiBaseUrl>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
<outputFormat>yaml</outputFormat>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated OpenAPI Specification will be written to. |
|
none |
|
|
The base URL for the Aspect API OpenAPI specification. |
|
none |
|
|
The path to a file including the schema description for the resource. For JSON the description has to be in json, for YAML it has to be in YAML. |
|
none |
|
|
Use the complete semantic version of the Aspect Model as the version of the Aspect API. |
|
|
|
|
The |
|
none |
|
|
Include the path for the Query Aspect API Endpoint in the OpenAPI specification. |
|
|
|
|
Include the POST/PUT/PATCH methods in the OpenAPI specification. |
|
|
|
|
Include the POST method in the OpenAPI specification. |
|
|
|
|
Include the PUT method in the OpenAPI specification. |
|
|
|
|
Include the PATCH method in the OpenAPI specification. |
|
|
|
|
Exclude paging information for the Aspect API Endpoint in the OpenAPI specification. |
|
|
|
|
Set the used paging strategy as cursor-based paging. |
|
|
|
|
Set the used paging strategy as offset-based paging. |
|
|
|
|
Set the used paging strategy as time-based paging. |
|
|
|
|
The format of the resulting OpenAPI Specification. May be either JSON or YAML. |
|
none |
|
|
Create separate files for each schema. |
|
|
|
|
The language from the model for which an OpenAPI specification should be generated. |
|
en |
|
|
The path to the file with a template for the resulting specification, including values undefined by the aspect’s OpenAPI specification. The template can be in JSON or YAML format. |
|
none |
Generate an AsyncAPI Specification from an Aspect Model
The generateAsyncApiSpec
goal generates an AsyncAPI Specification for a given Aspect Model. The
default life cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-asyncapi-spec</id>
<goals>
<goal>generateAsyncApiSpec</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
<outputFormat>json</outputFormat>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
The path to the directory where the generated AsyncAPI Specification will be written to. |
|
none |
|
|
Sets the application id, e.g. an identifying URL |
|
none |
|
|
Sets the channel address (i.e., for MQTT, the topic’s name) |
|
none |
|
|
Use the complete semantic version of the Aspect Model as the version of the Aspect API. |
|
|
|
|
The format of the resulting AsyncAPI Specification. May be either JSON or YAML. |
|
none |
|
|
Create separate files for each schema. |
|
|
|
|
The language from the model for which an AsyncAPI specification should be generated. |
|
en |
Generate an SQL script from an Aspect Model
The generateSql
goal generates an SQL table creation script for a given Aspect Model. The default
life cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-sql</id>
<goals>
<goal>generateSql</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
The path to the directory where the generated SQL script will be written to. |
|
none |
|
|
The SQL dialect to generate for. |
|
|
|
|
The mapping strategy to use. |
|
|
|
|
The language from the model to use for generated comments. |
|
en |
|
|
Include table comment in the generated SQL script. |
|
|
|
|
Include column comments in the generated SQL script. |
|
|
|
|
The prefix to use for Databricks table creation commands. |
|
|
|
|
The precision to use for Databricks decimal columns, between 1 and 38. See also notes in the Databricks type mapping. |
|
10 |
|
|
Contains |
|
Generate Documentation for an Aspect Model
Generating HTML Documentation
The generateDocumentation
goal generates HTML reference documentation for a given Aspect Model.
The default life cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-html-doc</id>
<goals>
<goal>generateDocumentation</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated HTML document will be written to. |
|
none |
|
|
Path to a CSS file with custom styles to be included in the generated HTML documentation. |
|
none |
Generating SVG or PNG Diagrams
The generateDiagram
goal generates an automatically layouted diagram for a given Aspect Model in
SVG or PNG. The default life cycle phase for the goal is
generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-aspect-model-diagram</id>
<goals>
<goal>generateDiagram</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
<targetFormats>
<targetFormat>png</targetFormat>
</targetFormats>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated diagrams will be written to. |
|
none |
|
|
A list formats in which the diagram(s) will be created. A diagram will be generated for each specified format. |
|
none |
Generating Sample JSON Payload
The generateJsonPayload
goal generates a valid sample JSON payload for a given Aspect Model as it
could be returned by an Aspect that implements that Aspect Model. The default life cycle phase for
the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-json-payload</id>
<goals>
<goal>generateJsonPayload</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated JSON payload will be written to. |
|
none |
Pretty Print
The prettyPrint
goal formats the given Aspect Model. The formatted file is written to the location
specified in the outputDirectory
property. The default life cycle phase for the goal is
generate-resources
. Note that the prettyPrint
goal can also be used as a substitute of the
now-removed migrate
goal, since it implies loading and automatically migrating a model to the
latest meta model version before it is pretty-printed.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>pretty-print-aspect-model</id>
<goals>
<goal>prettyPrint</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory containing the pretty printed Aspect Model. |
|
none |
Conversion to and from AAS
Generate an AAS file from an Aspect Model
The generateAas
goal generates a file containing an Asset Administration Shell (AAS) environment
with a submodel template that corresponds to a given input Aspect Model. The output file can be
written in either AASX, XML or JSON formats. The default life cycle phase for the goal is
generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-aas</id>
<goals>
<goal>generateAas</goal>
</goals>
</execution>
</executions>
<configuration>
<modelsRootDirectory>${path-to-models-root}</modelsRootDirectory>
<includes>
<include>${urn-of-aspect-model-to-be-included}</include>
</includes>
<outputDirectory>${directory-for-generated-source-files}</outputDirectory>
<targetFormat>aasx</targetFormat>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
The path to the root directory containing the Aspect Model file(s). |
|
|
|
|
A list of Aspect Model URNs identifying the Aspect Models to be included in the plugin execution. |
|
none |
|
|
The path to the directory where the generated AAS file will be written to. |
|
none |
|
|
The format to write, one of |
|
none |
Generate an Aspect Model from an AAS file
The generateAspectFromAas
goal generates one Aspect Model for each of the AAS submodel templates
defined in a given input AAS file. The input file can be given in either AASX, XML or JSON formats.
The output files are written to a directory in the
models directory structure. The default
life cycle phase for the goal is generate-resources
.
Usage:
<build>
<plugins>
<plugin>
<artifactId>esmf-aspect-model-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-aspect-model-from-aas</id>
<goals>
<goal>generateAspectFromAas</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>${aas-file-path}</include>
</includes>
<outputDirectory>${directory-for-generated-aspect-models}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Configuration Properties:
Property | Description | Type | Default Value | Required |
---|---|---|---|---|
|
Detailed validation messages if the model can not be loaded |
|
|
|
|
A list of AAS files to convert. |
|
none |
|
|
The path to the directory where the generated Aspect Models will be written to. |
|
none |