<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.openecomp.mso</groupId>
    	<artifactId>bpmn</artifactId>
    	<version>1.1.0-SNAPSHOT</version>
  	</parent>
  	<artifactId>MSOCommonBPMN</artifactId>
  	<name>MSOCommonBPMN</name>
  	<packaging>war</packaging>

	<build>
		<plugins>
		    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>test-compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                            <configuration>
                                <skip>false</skip>
                            </configuration>
                        </execution>
                    </executions>
            </plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.6</version>
				<executions>
					<execution>
 						<!-- Build MSOCommonBPMN-${version}.jar -->
						<id>default-jar</id>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
                        	<excludes>
								<exclude>org/openecomp/mso/bpmn/common/MSOCommonApplication.class</exclude>
<!-- 								<exclude>META-INF/</exclude> -->
							</excludes>
						</configuration>
					</execution>
	               	<execution>
	                	<goals>
	                		<goal>test-jar</goal>
	                    </goals>
	                    <configuration>
	                       <forceCreation>true</forceCreation>
	                       <skip>false</skip>
	                    </configuration>
	                </execution>
               </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                    <goals>
                        <goal>attach-artifact</goal>
                    </goals>
                    <phase>package</phase>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
                                    <type>jar</type>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
				    <failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.cxf</groupId>
				<artifactId>cxf-codegen-plugin</artifactId>
				<version>2.5.2</version>
			</plugin>
			<plugin>
            	<groupId>org.apache.maven.plugins</groupId>
            	<artifactId>maven-eclipse-plugin</artifactId>
            	<version>2.8</version>
            	<configuration>
                	<additionalProjectnatures>
                    	<projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature>
                	</additionalProjectnatures>
                	<sourceIncludes>
                    	<sourceInclude>**/*.groovy</sourceInclude>
                	</sourceIncludes>
            	</configuration>
        	</plugin>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<id>compile</id>
						<phase>compile</phase>
						<configuration>
							<tasks>
								<mkdir dir="${basedir}/src/main/groovy" />
								<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
									<classpath refid="maven.compile.classpath" />
								</taskdef>
								<mkdir dir="${project.build.outputDirectory}" />
								<groovyc destdir="${project.build.outputDirectory}"
									srcdir="${basedir}/src/main/groovy/" listfiles="true">
									<classpath refid="maven.compile.classpath" />
								</groovyc>
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					<execution>
						<id>test-compile</id>
						<phase>test-compile</phase>
						<configuration>
							<tasks>
								<mkdir dir="${basedir}/src/test/groovy" />
								<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
									<classpath refid="maven.test.classpath" />
								</taskdef>
								<mkdir dir="${project.build.testOutputDirectory}" />
								<groovyc destdir="${project.build.testOutputDirectory}"
									srcdir="${basedir}/src/test/groovy/" listfiles="true">
									<classpath refid="maven.test.classpath" />
								</groovyc>
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.maven.plugins
										</groupId>
										<artifactId>
											maven-antrun-plugin
										</artifactId>
										<versionRange>
											[1.3,)
										</versionRange>
										<goals>
											<goal>run</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<dependencies>

		<dependency>
			<!-- process engine, in compile scope to include it in the war file -->
			<groupId>org.camunda.bpm</groupId>
			<artifactId>camunda-engine</artifactId>
			<scope>compile</scope>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- Using the `DefaultEjbProcessApplication` result in: `java.sql.SQLException:
			You cannot commit during a managed transaction!` -->
		<dependency>
			<!-- CDI integration, needs to be included in WAR, otherwise CDI can not
				work correctly -->
			<groupId>org.camunda.bpm</groupId>
			<artifactId>camunda-engine-cdi</artifactId>
		</dependency>

		<dependency>
			<!-- AssertJ Testing Library -->
			<groupId>org.camunda.bpm.extension</groupId>
			<artifactId>camunda-bpm-assert</artifactId>
			<version>1.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-all</artifactId>
			<version>1.10.19</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<!-- Optional Plugin for Camunda BPM Workbench -->
			<groupId>org.camunda.bpm.workbench</groupId>
			<artifactId>camunda-workbench-dist-embeddable</artifactId>
			<version>1.0.0-alpha8</version>
			<scope>test</scope>
		</dependency>

		<!-- Spin dataformat support, in compile scope to include it in the war
			file -->
		<dependency>
			<groupId>org.camunda.spin</groupId>
			<artifactId>camunda-spin-dataformat-all</artifactId>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.camunda.bpm</groupId>
			<artifactId>camunda-engine-plugin-spin</artifactId>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.camunda.bpm</groupId>
			<artifactId>camunda-engine-plugin-connect</artifactId>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<!-- Bootstrap for styling via Webjars project -->
			<groupId>org.webjars</groupId>
			<artifactId>bootstrap</artifactId>
			<version>2.3.2</version>
		</dependency>

		<dependency>
		    <groupId>org.jboss.resteasy</groupId>
		    <artifactId>resteasy-client</artifactId>
		    <version>3.0.19.Final</version>
		    <scope>provided</scope>
			<exclusions>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<!-- Needed for InMemoryH2Test -->
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.uuid</groupId>
			<artifactId>java-uuid-generator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy-all</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.4</version>
		</dependency>
		<dependency>
			<groupId>org.openecomp.mso</groupId>
			<artifactId>MSOCoreBPMN</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<!-- unit test utilities -->
			<groupId>org.openecomp.mso</groupId>
			<artifactId>MSOCoreBPMN</artifactId>
			<version>${project.version}</version>
			<classifier>tests</classifier>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>javax.ws.rs-api</artifactId>
			<version>2.0</version>
		</dependency>
		<!-- 		for encoding the url the same way A&AI does -->
	<dependency>
	   <groupId>org.springframework</groupId>
    	<artifactId>spring-web</artifactId>
    	<version>4.3.2.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.openecomp.mso</groupId>
		<artifactId>MSOMockServer</artifactId>
		<version>${project.version}</version>
		<classifier>classes</classifier>
		<scope>test</scope>
	</dependency>
	<dependency>
	  <groupId>org.openecomp.mso</groupId>
  	  <artifactId>MSORESTClient</artifactId>
  	  <version>${project.version}</version>
	</dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

	<dependency>
			<groupId>com.github.tomakehurst</groupId>
			<artifactId>wiremock</artifactId>
			<version>1.56</version>
			<scope>test</scope>
			<classifier>standalone</classifier>
			<exclusions>
				<exclusion>
					<groupId>org.mortbay.jetty</groupId>
					<artifactId>jetty</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.guava</groupId>
					<artifactId>guava</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.fasterxml.jackson.core</groupId>
					<artifactId>jackson-core</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.fasterxml.jackson.core</groupId>
					<artifactId>jackson-annotations</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.fasterxml.jackson.core</groupId>
					<artifactId>jackson-databind</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.skyscreamer</groupId>
					<artifactId>jsonassert</artifactId>
				</exclusion>
				<exclusion>
					<groupId>xmlunit</groupId>
					<artifactId>xmlunit</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.jayway.jsonpath</groupId>
					<artifactId>json-path</artifactId>
				</exclusion>
				<exclusion>
					<groupId>net.sf.jopt-simple</groupId>
					<artifactId>jopt-simple</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
</project>
