Camel YAML DSL Validator Maven Plugin
The Camel YAML DSL Validator Maven Plugin supports the following goals
-
camel-yaml-dsl-validator:validate - To validate YAML routes are correct according to spec
camel-yaml-dsl-validator:validate
For validating YAML routes against the generated YAML DSL JSON Schema.
Runtime extensions such as custom YamlDeserializerResolver implementations are not added to this schema, so the validate goal does not accept module-provided custom YAML step names. The Maven plugin does not run Camel’s YAML route loader and does not load custom resolvers. For those routes, use runtime route loading tests in addition to this schema validation.
Then you can run the validate goal from the command line or from within your Java editor such as IDEA or Eclipse.
mvn camel-yaml-dsl-validator:validate You can also enable the plugin to run automatically as part of the build to catch these errors.
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-yaml-dsl-validator-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin> The phase determines when the plugin runs. In the sample above the phase is process-classes which runs after the compilation of the main source code.
The maven plugin can also be configured to validate the test source code, which means that the phase should be changed accordingly to process-test-classes as shown below:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-yaml-dsl-validator-maven-plugin</artifactId>
<executions>
<execution>
<configuration>
<includeTest>true</includeTest>
</configuration>
<phase>process-test-classes</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin> Running the goal on any Maven project
You can also run the validate goal on any Maven project without having to add the plugin to the pom.xml file. Doing so requires to specify the plugin using its fully qualified name. For example to run the goal on the main-yaml from Apache Camel you can run
cd main-yaml
mvn org.apache.camel:camel-yaml-dsl-validator-maven-plugin:4.18.0:validate Which for example outputs (with a forced error)
[INFO] --- camel-yaml-dsl-validator:4.18.0:validate (default-cli) @ camel-example-main-yaml ---
[INFO] Found [/Users/davsclaus/workspace/camel-examples/main-yaml/src/main/resources/routes/my-route.camel.yaml] YAML files ...
[INFO] Validating 1 YAML files ...
[WARNING]
Validation error detected in 1 files
File: my-route.camel.yaml
/0/route/from: property 'step' is not defined in the schema and the schema does not allow additional properties
/0/route/from: required property 'steps' not found Options
The maven plugin validate goal supports the following options which can be configured from the command line (use -D syntax), or defined in the pom.xml file in the <configuration> tag.
Parameter | Default Value | Description |
skip | false | Skip the validation execution. |
failOnError | false | Whether to fail if invalid Camel endpoints was found. By default the plugin logs the errors at WARN level. |
includeTest | false | Whether to include test source code. |
includes | To filter the names of YAML files to only include files matching any of the given list of patterns (wildcard and regular expression). Multiple values can be separated by comma. | |
excludes | To filter the names of YAML files to exclude files matching any of the given list of patterns (wildcard and regular expression). Multiple values can be separated by comma. | |
onlyCamelYamlExt | false | Whether to only accept files with xxx.camel.yaml as file name. By default, all .yaml files are accepted. |
directories | Additional directories to scan for YAML files. By default, only the project’s resource directories are scanned. |
For example to excludes a specific file:
mvn camel-yaml-dsl-validator:validate -Dcamel.excludes=cheese.yaml Notice that you must prefix the -D command argument with camel., eg camel.excludes as the option name.
Validating with additional directories
If your YAML route files are stored in a location outside the standard Maven resource directories, you can specify additional directories to scan:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-yaml-dsl-validator-maven-plugin</artifactId>
<executions>
<execution>
<configuration>
<directories>
<directory>src/main/routes</directory>
<directory>src/main/camel</directory>
</directories>
</configuration>
<phase>process-classes</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin> Both relative and absolute paths are supported. Relative paths are resolved against the project base directory.