Skip to content

Instantly share code, notes, and snippets.

@jeffjensen
Created January 19, 2015 04:52
Show Gist options
  • Save jeffjensen/729d64c56d5563dc9da2 to your computer and use it in GitHub Desktop.
Save jeffjensen/729d64c56d5563dc9da2 to your computer and use it in GitHub Desktop.
Example client module showing Serenity dependency issues via maven-enforcer-plugin. Just run mvn compile
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.1.RELEASE</version>
</parent>
<groupId>com.example</groupId>
<artifactId>issues</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Example issues project</name>
<description>Showing dependency issues.</description>
<properties>
<java.version>1.7</java.version>
<!-- build settings -->
<mavenMinVersion>3.2.3</mavenMinVersion>
<!-- DEPENDENCY VERSIONS -->
<!-- test dependency versions -->
<extraEnforcerRulesVersion>1.0-beta-3</extraEnforcerRulesVersion>
<cucumberCoreVersion>1.2.2</cucumberCoreVersion>
<cucumberGherkinVersion>2.12.2</cucumberGherkinVersion>
<cucumberHtmlVersion>0.2.3</cucumberHtmlVersion>
<cucumberJavaVersion>1.2.2</cucumberJavaVersion>
<cucumberJunitVersion>1.2.2</cucumberJunitVersion>
<cucumberJvmVersion>1.0.3</cucumberJvmVersion>
<serenityVersion>1.0.24</serenityVersion>
<serenityCucumberVersion>1.0.5</serenityCucumberVersion>
<!-- PLUGIN VERSIONS -->
<!-- lifecycle related -->
<cleanPluginVersion>2.6.1</cleanPluginVersion>
<compilerPluginVersion>3.2</compilerPluginVersion>
<dependencyPluginVersion>2.9</dependencyPluginVersion>
<enforcerPluginVersion>1.3.1</enforcerPluginVersion>
<jarPluginVersion>2.5</jarPluginVersion>
<resourcesPluginVersion>2.7</resourcesPluginVersion>
<!-- test related -->
<failsafePluginVersion>2.18.1</failsafePluginVersion>
<surefirePluginVersion>2.18.1</surefirePluginVersion>
</properties>
<prerequisites>
<maven>${mavenMinVersion}</maven>
</prerequisites>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${cleanPluginVersion}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compilerPluginVersion}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
<arg>-Werror</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${dependencyPluginVersion}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${enforcerPluginVersion}</version>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>${extraEnforcerRulesVersion}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>enforcer</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<!--
Quick links to rules:
1) http://maven.apache.org/enforcer/enforcer-rules/index.html
2) http://mojo.codehaus.org/extra-enforcer-rules/
-->
<rules>
<!-- main rules -->
<requireMavenVersion>
<version>${mavenMinVersion}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${java.version}</version>
</requireJavaVersion>
<requireNoRepositories>
<message>Best Practice is to never define repositories in pom.xml (use a repository manager instead)</message>
</requireNoRepositories>
<requirePluginVersions>
<phases>compile</phases>
</requirePluginVersions>
<requireUpperBoundDeps />
<DependencyConvergence />
<bannedDependencies>
<!-- these are the banned deps; "exclude" is confusing! -->
<excludes>
<exclude>commons-logging</exclude>
<exclude>log4j:log4j</exclude>
<exclude>org.apache.logging.log4j:*</exclude>
</excludes>
<includes>
</includes>
</bannedDependencies>
<banTransitiveDependencies>
<!-- these are the trans deps to allow/ignore when occur -->
<excludes>
<exclude>org.springframework.boot:*:*</exclude>
</excludes>
<includes>
</includes>
</banTransitiveDependencies>
<!-- extra rules -->
<banCircularDependencies />
<banDuplicateClasses>
<findAllDuplicates>true</findAllDuplicates>
<dependencies>
<dependency>
<groupId>org.apache.tomcat*</groupId>
<ignoreClasses>
<ignoreClass>*</ignoreClass>
</ignoreClasses>
</dependency>
<dependency>
<groupId>org.aspectj*</groupId>
<ignoreClasses>
<ignoreClass>*</ignoreClass>
</ignoreClasses>
</dependency>
</dependencies>
</banDuplicateClasses>
<enforceBytecodeVersion>
<maxJdkVersion>1.7</maxJdkVersion>
</enforceBytecodeVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafePluginVersion}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${jarPluginVersion}</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<url>${project.url}</url>
<Build-Number>${BUILD_NUMBER}</Build-Number>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${resourcesPluginVersion}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefirePluginVersion}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<!-- Cucumber -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>${cucumberCoreVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-html</artifactId>
<version>${cucumberHtmlVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumberJavaVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>${cucumberJvmVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumberJunitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>gherkin</artifactId>
<version>${cucumberGherkinVersion}</version>
<scope>test</scope>
</dependency>
<!-- Serenity -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>core</artifactId>
<version>${serenityVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>${serenityVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber</artifactId>
<version>${serenityCucumberVersion}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Cucumber -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-html</artifactId>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>gherkin</artifactId>
</dependency>
<!-- Serenity -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>core</artifactId>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber</artifactId>
</dependency>
</dependencies>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment