<?xml version="1.0" encoding="UTF-8"?> <!-- The MIT License Copyright (c) 2014-2016 Ilkka Seppälä Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --><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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.iluwatar</groupId> <artifactId>java-design-patterns</artifactId> <version>1.19.0-SNAPSHOT</version> <packaging>pom</packaging> <inceptionYear>2014</inceptionYear> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hibernate.version>5.0.1.Final</hibernate.version> <spring.version>4.2.4.RELEASE</spring.version> <spring-boot.version>1.3.3.RELEASE</spring-boot.version> <spring-data.version>1.9.2.RELEASE</spring-data.version> <h2.version>1.4.190</h2.version> <junit.version>4.12</junit.version> <junit-jupiter.version>5.0.2</junit-jupiter.version> <junit-vintage.version>${junit.version}.2</junit-vintage.version> <junit-platform.version>1.0.2</junit-platform.version> <sping-test-junit5.version>1.0.2</sping-test-junit5.version> <compiler.version>3.0</compiler.version> <jacoco.version>0.7.9</jacoco.version> <commons-dbcp.version>1.4</commons-dbcp.version> <camel.version>2.16.1</camel.version> <guava.version>19.0</guava.version> <mockito.version>1.10.19</mockito.version> <apache-httpcomponents.version>4.5.2</apache-httpcomponents.version> <htmlunit.version>2.22</htmlunit.version> <guice.version>4.0</guice.version> <mongo-java-driver.version>3.3.0</mongo-java-driver.version> <slf4j.version>1.7.21</slf4j.version> <logback.version>1.1.7</logback.version> </properties> <modules> <module>abstract-factory</module> <module>tls</module> <module>builder</module> <module>factory-method</module> <module>prototype</module> <module>singleton</module> <module>adapter</module> <module>bridge</module> <module>composite</module> <module>dao</module> <module>data-mapper</module> <module>decorator</module> <module>facade</module> <module>flyweight</module> <module>proxy</module> <module>chain</module> <module>command</module> <module>interpreter</module> <module>iterator</module> <module>mediator</module> <module>memento</module> <module>model-view-presenter</module> <module>observer</module> <module>state</module> <module>strategy</module> <module>template-method</module> <module>visitor</module> <module>double-checked-locking</module> <module>servant</module> <module>service-locator</module> <module>null-object</module> <module>event-aggregator</module> <module>callback</module> <module>execute-around</module> <module>property</module> <module>intercepting-filter</module> <module>producer-consumer</module> <module>poison-pill</module> <module>reader-writer-lock</module> <module>lazy-loading</module> <module>service-layer</module> <module>specification</module> <module>tolerant-reader</module> <module>model-view-controller</module> <module>flux</module> <module>double-dispatch</module> <module>multiton</module> <module>resource-acquisition-is-initialization</module> <module>thread-pool</module> <module>twin</module> <module>private-class-data</module> <module>object-pool</module> <module>dependency-injection</module> <module>naked-objects</module> <module>front-controller</module> <module>repository</module> <module>async-method-invocation</module> <module>monostate</module> <module>step-builder</module> <module>business-delegate</module> <module>half-sync-half-async</module> <module>layers</module> <module>message-channel</module> <module>fluentinterface</module> <module>reactor</module> <module>caching</module> <module>publish-subscribe</module> <module>delegation</module> <module>event-driven-architecture</module> <module>api-gateway</module> <module>factory-kit</module> <module>feature-toggle</module> <module>value-object</module> <module>module</module> <module>monad</module> <module>mute-idiom</module> <module>mutex</module> <module>semaphore</module> <module>hexagonal</module> <module>abstract-document</module> <module>aggregator-microservices</module> <module>promise</module> <module>page-object</module> <module>event-asynchronous</module> <module>event-queue</module> <module>queue-load-leveling</module> <module>object-mother</module> <module>data-bus</module> <module>converter</module> <module>guarded-suspension</module> <module>balking</module> <module>extension-objects</module> <module>marker</module> <module>cqrs</module> <module>event-sourcing</module> <module>data-transfer-object</module> <module>throttling</module> <module>unit-of-work</module> <module>partial-response</module> <module>eip-wire-tap</module> <module>eip-splitter</module> <module>eip-aggregator</module> <module>retry</module> <module>trampoline</module> </modules> <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependencyManagement> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${spring-data.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${apache-httpcomponents.version}</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>${h2.version}</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>${commons-dbcp.version}</version> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>${camel.version}</version> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-stream</artifactId> <version>${camel.version}</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-migrationsupport</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <version>${junit-vintage.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.github.sbrannen</groupId> <artifactId>spring-test-junit5</artifactId> <version>${sping-test-junit5.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>${htmlunit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>${guice.version}</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>${mongo-java-driver.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback.version}</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <!-- This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. TODO: Remove when the m2e plugin can correctly bind to Maven lifecycle --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.jacoco</groupId> <artifactId> jacoco-maven-plugin </artifactId> <versionRange> [0.6.2,) </versionRange> <goals> <goal>prepare-agent</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!-- Tell maven to compile using Java 8 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${compiler.version}</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> </executions> </plugin> <!--checkstyle plug-in. checking against googles styles see config at checkstyle.xml --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>2.17</version> <executions> <execution> <id>validate</id> <goals> <goal>check</goal> </goals> <phase>validate</phase> <configuration> <configLocation>checkstyle.xml</configLocation> <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation> <encoding>UTF-8</encoding> <consoleOutput>true</consoleOutput> <failsOnError>true</failsOnError> <includeTestSourceDirectory>true</includeTestSourceDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>${junit-platform.version}</version> </dependency> </dependencies> <configuration> <argLine>-Xmx1024M --add-modules java.xml.bind,java.xml.ws.annotation ${argLine}</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.6</version> <configuration> <failOnViolation>true</failOnViolation> <failurePriority>5</failurePriority> <printFailingErrors>true</printFailingErrors> </configuration> <executions> <execution> <goals> <goal>check</goal> </goals> <configuration> <excludeFromFailureFile>exclude-pmd.properties</excludeFromFailureFile> </configuration> </execution> </executions> </plugin> <plugin> <groupId>com.mycila</groupId> <artifactId>license-maven-plugin</artifactId> <version>2.11</version> <configuration> <header>com/mycila/maven/plugin/license/templates/MIT.txt</header> <properties> <owner>Ilkka Seppälä</owner> </properties> <skipExistingHeaders>true</skipExistingHeaders> </configuration> <executions> <execution> <id>install-format</id> <phase>install</phase> <goals> <goal>format</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.6</version> </plugin> </plugins> </reporting> </project>