aboutsummaryrefslogtreecommitdiffstats
path: root/enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm
diff options
context:
space:
mode:
authorJulien Eluard <[email protected]>2010-12-04 13:49:39 +0100
committerJulien Eluard <[email protected]>2010-12-04 13:49:39 +0100
commit94f32c8a533a4649ff215dadec447ce1ccf1fe8b (patch)
tree735a7cd14c7e0a7fce94747f15f617ba5c4cfd13 /enforcer-rule/src/site/apt/examples/semantic-versioning-conformance.apt.vm
parent7fba91665a3d3f75f9c7d32d163246581563b395 (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.vm298
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>
+---