<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>org.mule.templates</groupId>
    <artifactId>templates-tooling-parent-pom</artifactId>
    <version>1.3.2</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <mule.version>3.8.1</mule.version>
        <mule.module.syncrhonize.version>1.0</mule.module.syncrhonize.version>

        <sfdc.version>7.2.0</sfdc.version>
        <wday.version>8.0.0</wday.version>
        <sap.version>3.0.0</sap.version>
        <sieb.version>3.0.1</sieb.version>
        <snow.version>5.2.1</snow.version>
        <nets.version>7.2.0</nets.version>
        <msdyn.version>2.8.0</msdyn.version>
        <mssp.version>2.1.12</mssp.version>
        <mkto.version>2.0.0</mkto.version>

        <maven.mule.plugin.version>1.9</maven.mule.plugin.version>
        <readme.generator.plugin.version>1.0.8</readme.generator.plugin.version>
        <assembly-descriptor-version>1.0.19</assembly-descriptor-version>
        <tooling.common.version>1.0.0</tooling.common.version>
        <fragments.builder.version>1.0.0-ALPHA1</fragments.builder.version>
        <fragments.catalog.version>1.0.0-ALPHA1</fragments.catalog.version>

        <licensePath>LICENSE_HEADER.txt</licensePath>

        <skip.readme.generation>false</skip.readme.generation>

        <junit.version>4.9</junit.version>

        <jdkName>JavaSE-1.8</jdkName>
        <jdk.version>1.8</jdk.version>
        <eclipsePluginVersion>2.8</eclipsePluginVersion>
        <munit.version>1.2.0</munit.version>
        <mule.munit.support.version>3.8.0</mule.munit.support.version>
    </properties>

    <build>
        <!-- THIS MY GO IN THE NEAR FUTURE -->
        <!-- Use a newer version of the install plugin than what your Maven uses
            by default. The older version failed to install the project if there was
            no target/classes folder. Since we use mule packaging on the project we actually
            create and attach the zip that must be installed. -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3.1</version>
                </plugin>
                <!--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.mule.tools</groupId>
                                        <artifactId>maven-mule-plugin</artifactId>
                                        <versionRange>[1.6,)</versionRange>
                                        <goals>
                                            <goal>attach-test-resources</goal>
                                            <goal>filter-resources</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.mule.tools</groupId>
                    <artifactId>maven-mule-plugin</artifactId>
                    <version>${maven.mule.plugin.version}</version>
                    <extensions>true</extensions>
                </plugin>

                <plugin>
                    <groupId>org.mule.templates</groupId>
                    <artifactId>templates-tooling-readme-generator-maven-plugin</artifactId>
                    <version>${readme.generator.plugin.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>readme</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <skipGeneration>${skip.readme.generation}</skipGeneration>
                    </configuration>
                </plugin>
		        <plugin>
                    <groupId>org.mule.templates</groupId>
                    <artifactId>templates-tooling-fragments-builder-maven-plugin</artifactId>
                    <version>${fragments.builder.version}</version>
                </plugin>
            </plugins>

        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>com.mycila.maven-license-plugin</groupId>
                <artifactId>maven-license-plugin</artifactId>
                <version>1.8.0</version>
                <configuration>
                    <header>LICENSE_HEADER.txt</header>
                    <excludes>
                        <exclude>target/**</exclude>
                        <exclude>src/main/java/com/sforce/**</exclude>
                        <exclude>**/.gitignore</exclude>
                        <exclude>**/*.txt</exclude>
                        <exclude>**/*.ftl</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.sample</exclude>
                        <exclude>**/*.md</exclude>
                        <exclude>**/build-number.txt</exclude>
                        <exclude>**/*.sql</exclude>
                        <!-- bamboo -->
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <encoding>ISO-8859-1</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>${eclipsePluginVersion}</version>
                <configuration>
                    <!-- by default download all sources when generating project files -->
                    <downloadSources>true</downloadSources>
                </configuration>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <tagNameFormat>v@{project.version}</tagNameFormat>
                    <updateWorkingCopyVersions>true</updateWorkingCopyVersions>
                    <pushChanges>false</pushChanges>
                </configuration>
            </plugin>

            <!-- Ship project names with version -->
			<plugin>
				<groupId>com.google.code.maven-replacer-plugin</groupId>
				<artifactId>replacer</artifactId>
				<version>1.5.3</version>
				<executions>
					<execution>
						<id>replace-project-name-Uith-version</id>
						<phase>validate</phase>
						<goals>
							<goal>replace</goal>
						</goals>
						<configuration>
							<basedir>${project.basedir}</basedir>
							<regex>true</regex>
							<preserveDir>true</preserveDir>
							<includes>
								<include>mule-project.xml</include>
							</includes>
							<replacements>
								<replacement>
									<token>&lt;name&gt;.*&lt;/name&gt;</token>
									<value>&lt;name&gt;${project.artifactId}-${project.version}&lt;/name&gt;</value>
								</replacement>
							</replacements>
						</configuration>
					</execution>
				</executions>
			</plugin>            
        </plugins>
    </build>

    <!-- Mule Dependencies -->
    <dependencies>
        <dependency>
            <groupId>org.mule</groupId>
            <artifactId>mule-core</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb.modules</groupId>
            <artifactId>mule-module-boot-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Xml configuration -->
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-spring-config</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb</groupId>
            <artifactId>mule-core-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Xml configuration -->
        <dependency>
            <groupId>com.mulesoft.muleesb.modules</groupId>
            <artifactId>mule-module-spring-config-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Mule Transports -->
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-file</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-http</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-jdbc</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-jms</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-vm</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-email</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>


        <!-- Mule Modules -->
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-json</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-client</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-cxf</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-management</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-scripting</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-sxc</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-xml</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-db</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- for testing -->
        <dependency>
            <groupId>xalan</groupId>
            <artifactId>xalan</artifactId>
            <version>2.7.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.9.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mockobjects</groupId>
            <artifactId>mockobjects-core</artifactId>
            <version>0.09</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.tests</groupId>
            <artifactId>mule-tests-functional</artifactId>
            <version>${mule.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-devkit-support</artifactId>
            <version>${mule.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb.modules</groupId>
            <artifactId>mule-module-batch-ee</artifactId>
            <version>${mule.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb.modules</groupId>
            <artifactId>mule-module-batch-ee</artifactId>
            <version>${mule.version}</version>
            <scope>test</scope>
            <classifier>tests</classifier>
        </dependency>

        <!-- Templates tooling -->

        <dependency>
            <groupId>org.mule.templates</groupId>
            <artifactId>templates-tooling-common</artifactId>
            <version>${tooling.common.version}</version>
        </dependency>
    </dependencies>

    <distributionManagement>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Repository</name>
            <url>http://repository-master.mulesoft.org/releases/</url>
        </repository>
        <snapshotRepository>
            <id>mulesoft-snapshots</id>
            <name>MuleSoft Snapshot Repository</name>
            <url>http://repository-master.mulesoft.org/snapshots/</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>https://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mulesoft-public</id>
            <name>MuleSoft Public Repository</name>
            <url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mulesoft-snapshots</id>
            <name>MuleSoft Snapshots Repository</name>
            <url>https://repository.mulesoft.org/snapshots/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>jboss</id>
            <name>JBoss</name>
            <url>http://repository.jboss.com/</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>https://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </pluginRepository>
        <pluginRepository>
            <id>mulesoft-snapshots</id>
            <name>MuleSoft Snapshots Repository</name>
            <url>https://repository.mulesoft.org/snapshots/</url>
            <layout>default</layout>
        </pluginRepository>
    </pluginRepositories>


    <profiles>
        <profile>
            <id>maven-assembly</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.mule.templates</groupId>
                        <artifactId>templates-tooling-readme-generator-maven-plugin</artifactId>
                    </plugin>

                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <configuration>
                            <descriptorRefs>
                                <descriptorRef>project</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release-assembly</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.mule.templates</groupId>
                        <artifactId>templates-tooling-readme-generator-maven-plugin</artifactId>
                    </plugin>
					<plugin>
						<artifactId>maven-antrun-plugin</artifactId>		
						<executions>		
							<execution>		
								<phase>pre-integration-test</phase>		
								<goals>		
									<goal>run</goal>		
								</goals>		
								<configuration>		
									<tasks>		
										<delete>		
											<fileset dir="${project.build.directory}" includes="*.zip" />		
										</delete>		
									</tasks>		
								</configuration>		
							</execution>		
						</executions>		
					</plugin>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.mule.templates</groupId>
                                <artifactId>templates-tooling-assembly-descriptor</artifactId>
                                <version>${assembly-descriptor-version}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                            	<id>studio-release</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${project.artifactId}-${project.version}</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                    <descriptorRefs>
                                    	<descriptorRef>studio-no-test-descriptor</descriptorRef>
                                    </descriptorRefs>
                                </configuration>
                            </execution>
                            <execution>
                            	<id>studio-tests-release</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${project.artifactId}-${project.version}</finalName>
                                    <appendAssemblyId>true</appendAssemblyId>
                                    <descriptorRefs>
                                        <descriptorRef>studio-with-tests-descriptor</descriptorRef>
                                    </descriptorRefs>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>jar-assembly</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.mule.templates</groupId>
                                <artifactId>templates-tooling-assembly-descriptor</artifactId>
                                <version>${assembly-descriptor-version}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${project.artifactId}</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                    <descriptorRefs>
                                        <descriptorRef>jar-descriptor</descriptorRef>
                                    </descriptorRefs>

                                    <!--<descriptorRefs>-->
                                    <!--<descriptorRef>jar-with-dependencies</descriptorRef>-->
                                    <!--</descriptorRefs>-->
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>test</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <mule.env>test</mule.env>
                <mule.test.timeoutSecs>999999</mule.test.timeoutSecs>
                <mule.verbose.exceptions>true</mule.verbose.exceptions>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.mule.templates</groupId>
                        <artifactId>templates-tooling-readme-generator-maven-plugin</artifactId>
                    </plugin>

                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <configuration>
                            <descriptorRefs>
                                <descriptorRef>project</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </plugin>

                    <!--Random port definition for test-->
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>1.9</version>
                        <executions>
                            <execution>
                                <id>reserve-network-port</id>
                                <goals>
                                    <goal>reserve-network-port</goal>
                                </goals>
                                <phase>process-resources</phase>
                                <configuration>
                                    <portNames>
                                        <portName>http.port</portName>
                                    </portNames>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- Integration Tests -->
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>2.6</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <useFile>false</useFile>
                            <argLine>-Xmx1024m -XX:MaxPermSize=512m</argLine>
                            <enableAssertions>false</enableAssertions>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${MULE_HOME}/conf/</additionalClasspathElement>
                                <!-- Location of the mule licence in Bamboo muleLicenseKey.lic -->
                                <additionalClasspathElement>/home/j2ee-bamboo/license/</additionalClasspathElement>
                            </additionalClasspathElements>
                            <systemProperties>
                                <property>
                                    <name>mule.env</name>
                                    <value>${mule.env}</value>
                                </property>
                                <property>
                                    <name>mule.test.timeoutSecs</name>
                                    <value>${mule.test.timeoutSecs}</value>
                                </property>
                                <property>
                                    <name>mule.verbose.exceptions</name>
                                    <value>${mule.verbose.exceptions}</value>
                                </property>
                                <property>
                                    <name>http.port</name>
                                    <value>${http.port}</value>
                                </property>
                            </systemProperties>
                        </configuration>
                    </plugin>

                    <!-- Unit Tests -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.14.1</version>
                        <configuration>
                            <useFile>false</useFile>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${MULE_HOME}/conf/</additionalClasspathElement>
                                <!-- Location of the mule licence in Bamboo muleLicenseKey.lic -->
                                <additionalClasspathElement>/home/j2ee-bamboo/license/</additionalClasspathElement>
                            </additionalClasspathElements>
                            <systemProperties>
                                <property>
                                    <name>mule.env</name>
                                    <value>${mule.env}</value>
                                </property>
                                <property>
                                    <name>mule.test.timeoutSecs</name>
                                    <value>${mule.test.timeoutSecs}</value>
                                </property>
                                <property>
                                    <name>mule.verbose.exceptions</name>
                                    <value>${mule.verbose.exceptions}</value>
                                </property>
                                <property>
                                    <name>http.port</name>
                                    <value>${http.port}</value>
                                </property>
                            </systemProperties>
                        </configuration>
                    </plugin>
    	    	</plugins>
            </build>
        </profile>
    </profiles>

    <scm>
        <connection>scm:git:https://github.com/mulesoft/templates-tooling-parent-pom.git</connection>
        <developerConnection>scm:git:https://github.com/mulesoft/templates-tooling-parent-pom.git</developerConnection>
        <url>https://github.com/mulesoft/templates-tooling-parent-pom</url>
      <tag>v1.3.2</tag>
  </scm>
</project>
