diff options
author | Julien Eluard <[email protected]> | 2010-12-04 13:49:39 +0100 |
---|---|---|
committer | Julien Eluard <[email protected]> | 2010-12-04 13:49:39 +0100 |
commit | 94f32c8a533a4649ff215dadec447ce1ccf1fe8b (patch) | |
tree | 735a7cd14c7e0a7fce94747f15f617ba5c4cfd13 /enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm | |
parent | 7fba91665a3d3f75f9c7d32d163246581563b395 (diff) |
Added requireBackwardCompatibility rule.
Diffstat (limited to 'enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm')
-rw-r--r-- | enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm b/enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm new file mode 100644 index 0000000..fdfd7dd --- /dev/null +++ b/enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm @@ -0,0 +1,298 @@ +#* + * This software is licensed under the Apache 2 license, quoted below. + * + * Copyright 2010 Julien Eluard + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * [http://www.apache.org/licenses/LICENSE-2.0] + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + *# + +Checking a project's version against older releases + +* Basic example + + In order to check your project's version against an older release, you must add the enforcer rule as a dependency to + the maven-enforcer-plugin and then configure your the maven-enforcer-plugin to run the rule. + + By default current artifact will be checked against most recently released version (retrieved from either local or one of configured remote repositories). + +--- +<project> + ... + <build> + ... + <plugins> + ... + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-beta-1</version> + ... + <dependencies> + ... + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + </dependency> + ... + </dependencies> + ... + <executions> + .... + <execution> + <id>check-version</id> + <phase>verify</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireSemanticVersioningConformance implementation="org.semver.enforcer.RequireSemanticVersioningConformance" /> + </rules> + </configuration> + </execution> + ... + </executions> + ... + </plugin> + ... + </plugins> + ... + </build> + ... +</project> +--- + +* Checking against a specific released version + + You can check your project against a specific released version: + +--- +<project> + ... + <build> + ... + <plugins> + ... + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-beta-1</version> + ... + <dependencies> + ... + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + </dependency> + ... + </dependencies> + ... + <executions> + .... + <execution> + <id>check-version</id> + <phase>verify</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireSemanticVersioningConformance implementation="org.semver.enforcer.RequireSemanticVersioningConformance"> + ... + <previousVersion>1.0.0</previousVersion> + ... + </requireSemanticVersioningConformance> + </rules> + </configuration> + </execution> + ... + </executions> + ... + </plugin> + ... + </plugins> + ... + </build> + ... +</project> +--- + +* Including classes + + By default all classes will be considered during checking process. You might want to only check a subset of classes/packages. This is achieved by specifying <<<includes>>>. + +--- +<project> + ... + <build> + ... + <plugins> + ... + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-beta-1</version> + ... + <dependencies> + ... + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + </dependency> + ... + </dependencies> + ... + <executions> + .... + <execution> + <id>check-version</id> + <phase>verify</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireSemanticVersioningConformance implementation="org.semver.enforcer.RequireSemanticVersioningConformance"> + ... + <includes> + <include>org.project.MyClass</include> + </includes> + ... + </requireSemanticVersioningConformance> + </rules> + </configuration> + </execution> + ... + </executions> + ... + </plugin> + ... + </plugins> + ... + </build> + ... +</project> +--- + + We can specify multiple <includes> classes or packages. For example, to include <<<org.project.MyClass>>> class and <<<org.project.internal>>> package you would use a configuration like: + +--- +<project> + ... + <build> + ... + <plugins> + ... + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-beta-1</version> + ... + <dependencies> + ... + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + </dependency> + ... + </dependencies> + ... + <executions> + .... + <execution> + <id>check-version</id> + <phase>verify</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireSemanticVersioningConformance implementation="org.semver.enforcer.RequireSemanticVersioningConformance"> + ... + <includes> + <include>org.project.MyClass</include> + <include>org.project.internal</include> + </includes> + ... + </requireSemanticVersioningConformance> + </rules> + </configuration> + </execution> + ... + </executions> + ... + </plugin> + ... + </plugins> + ... + </build> + ... +</project> +--- + +* Excluding classes + + You may also want to exclude some classes/packages. For instance internal code might evolve independently from published API. This is achieved by specifying <<<excludes>>>. + +--- +<project> + ... + <build> + ... + <plugins> + ... + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-beta-1</version> + ... + <dependencies> + ... + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + </dependency> + ... + </dependencies> + ... + <executions> + .... + <execution> + <id>check-version</id> + <phase>verify</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireSemanticVersioningConformance implementation="org.semver.enforcer.RequireSemanticVersioningConformance"> + ... + <excludes> + <exclude>org.project.MyClass</exclude> + </excludes> + ... + </requireSemanticVersioningConformance> + </rules> + </configuration> + </execution> + ... + </executions> + ... + </plugin> + ... + </plugins> + ... + </build> + ... +</project> +--- |