<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <groupId>org.teiid</groupId>
        <artifactId>teiid-build-configuration-parent</artifactId>
        <version>11.2.3</version>
        <relativePath>build-configuration/pom.xml</relativePath>
    </parent>  
    
    <modelVersion>4.0.0</modelVersion>
	<groupId>org.teiid</groupId>
	<artifactId>teiid-parent</artifactId>
	<packaging>pom</packaging>
	<name>Teiid</name>

    <version>11.2.3</version>
	<description>Federated SQL and XML query engine.</description>
	<properties>		
	    <site.url>http://teiid.io</site.url>
	    <illegaltransitivereportonly>true</illegaltransitivereportonly>
	    <version.teiid.console>3.1.0</version.teiid.console>
	</properties>
	<scm>
        <connection>scm:git:git://github.com/teiid/teiid.git</connection>
        <developerConnection>scm:git:git@github.com:teiid/teiid.git</developerConnection>
        <url>http://github.com/teiid/teiid</url>
		<tag>teiid-parent-11.2.3</tag>
    </scm>
	<url>${site.url}</url>
	<developers>
		<developer>
			<name>Steve Hawkins</name>
			<id>steve</id>
			<email>shawkins@redhat.com</email>
			<organization>Red Hat</organization>
			<roles>
				<role>Project Lead</role>
			</roles>
			<timezone>-5</timezone>
		</developer>
		<developer>
			<name>Ramesh Reddy</name>
			<id>ramesh</id>
			<email>rareddy@redhat.com</email>
			<organization>Red Hat</organization>
			<roles>
				<role>Project Lead</role>
			</roles>
			<timezone>-6</timezone>
		</developer>
		<developer>
			<name>Van Halbert</name>
			<id>van</id>
			<email>vhalbert@redhat.com</email>
			<organization>Red Hat</organization>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>-6</timezone>
		</developer>
		<developer>
			<name>Ted Jones</name>
			<id>ted</id>
			<email>tejones@redhat.com</email>
			<organization>Red Hat</organization>
            <roles>
				<role>Developer</role>
			</roles>
			<timezone>-6</timezone>
		</developer>   
    </developers>
<profiles>
	<!-- This profile is activated manually, as in "mvn ... -P release ..." -->
	<profile>
		<id>release</id>
		<modules>
			<module>build</module>
		</modules>
	</profile>
	<profile>		
		<id>final-release</id>
		<modules>
			<module>build</module>
		</modules>
		<distributionManagement>
			<repository>
				<id>oss.sonatype.org</id>
				<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
			</repository>
			<snapshotRepository>
				<id>oss.sonatype.org</id>
				<url>https://oss.sonatype.org/content/repositories/snapshots</url>
			</snapshotRepository>
		</distributionManagement>			
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>${version.javadoc.plugin}</version>
					<configuration>
						<maxmemory>512m</maxmemory>
						<!-- <excludePackageNames>retroruntime.*,*.internal,com.*,net.*,org.teiid.cache,org.teiid.common.*,org.teiid.core,org.teiid.deployers,org.teiid.dqp.*,org.teiid.jboss,org.teiid.netty.*,org.teiid.odbc,org.teiid.query,org.teiid.rhq.*,org.teiid.runtime,org.teiid.security,org.teiid.services,org.teiid.templates,org.teiid.test.*,org.teiid.transport,org.teiid.vdb.*</excludePackageNames> -->
						<failOnError>false</failOnError>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>jar</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<artifactId>maven-gpg-plugin</artifactId>
					<executions>
						<execution>
							<id>sign-artifacts</id>
							<phase>verify</phase>
							<goals>
								<goal>sign</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
	</profile>
        
    <profile>
      <id>docs</id>
      <modules>
        <module>documentation</module>
      </modules>
    </profile>
      
    <profile>
         <!--
          This is to enable faster build for development time.
          -->
      <id>dev</id>
      <properties>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <skipTests>true</skipTests>
      </properties>
      <modules>
        <module>build</module>
      </modules>
    </profile>   
	</profiles>
	<build>
	<!-- This section defines the default plugin settings inherited by child projects. -->
	<pluginManagement>
		<plugins>
			<!-- Fixes how test resources of a project can be used in projects dependent on it -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>${version.jar.plugin}</version>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.4</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-rar-plugin</artifactId>
				<version>2.3</version>
			</plugin>
			<plugin>
				<groupId>org.wildfly.build</groupId>
				<artifactId>wildfly-feature-pack-build-maven-plugin</artifactId>
				<version>${version.org.wildfly.build-tools}</version>
			</plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
            </plugin>
                
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>${version.com.google.gwt}</version>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <!-- During release:perform, enable the "final-release" profile -->
                    <releaseProfiles>final-release</releaseProfiles>
                    <goals>deploy</goals>
                </configuration>
            </plugin>            
		</plugins>
	</pluginManagement>
	<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>de.is24.maven.enforcer.rules</groupId>
            <artifactId>illegal-transitive-dependency-check</artifactId>
            <version>1.7.4</version>
          </dependency>
          <dependency>
            <groupId>com.redhat.victims</groupId>
            <artifactId>enforce-victims-rule</artifactId>
            <version>1.3.4</version>
          </dependency>
          <dependency>
            <groupId>org.commonjava.maven.enforcer</groupId>
            <artifactId>enforce-managed-deps-rule</artifactId>
            <version>1.1</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>enforce-plugin-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requirePluginVersions>
                  <level>WARN</level>
                  <message>One or more plugins do not have valid version! The version needs to be explicitly specified, can not be a -SNAPSHOT version and can not be one of the special (and buggy) Maven versions (LATEST, RELEASE).</message>
                </requirePluginVersions>
              </rules>
            </configuration>
          </execution>

          <execution>
            <id>no-managed-deps</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>initialize</phase>
            <configuration>
              <rules>
                <requireManagedDeps implementation="org.commonjava.maven.enforcer.rule.EnforceManagedDepsRule">
                  <checkProfiles>true</checkProfiles>
                  <failOnViolation>false</failOnViolation>
                </requireManagedDeps>
              </rules>
            </configuration>
          </execution>

          <!--execution>
            <id>enforce-direct-dependencies</id>
            <phase>process-classes</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <illegalTransitiveDependencyCheck implementation="de.is24.maven.enforcer.rules.IllegalTransitiveDependencyCheck">
                  <reportOnly>${illegaltransitivereportonly}</reportOnly>
                  <regexIgnoredClasses>
                    <regexIgnoredClass>com\.sun\.net\.httpserver\..+</regexIgnoredClass>
                    <regexIgnoredClass>javax\..+</regexIgnoredClass>
                    <regexIgnoredClass>org\.w3c\.dom\..+</regexIgnoredClass>
                    <regexIgnoredClass>org\.xml\.sax\..+</regexIgnoredClass>
                  </regexIgnoredClasses>
                  <useClassesFromLastBuild>true</useClassesFromLastBuild>
                </illegalTransitiveDependencyCheck>
              </rules>
            </configuration>
          </execution-->

          <execution>
            <id>ban-blacklisted-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.apache.cxf:cxf-bundle-jaxrs</exclude>
                    <exclude>org.jboss.weld.se:weld-se</exclude><!-- Use weld-se-core instead -->
                    <exclude>org.jboss.weld.servlet:weld-servlet</exclude><!-- Use weld-servlet-core instead -->
                    <!--exclude>org.mockito:mockito-all</exclude--><!-- Use mockito-core instead -->
                  </excludes>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
        </executions>
    </plugin>        
		<!-- Specify the compiler options and settings -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>${version.compiler.plugin}</version>
			<configuration>
				<source>${maven.compiler.source}</source>
				<target>${maven.compiler.target}</target>
				<showDeprecation>false</showDeprecation>
				<showWarnings>false</showWarnings>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-checkstyle-plugin</artifactId>
			<executions>
				<execution>
					<id>verify-style</id>
					<phase>process-classes</phase>
					<goals>
						<goal>check</goal>
					</goals>
				</execution>
			</executions>
			<configuration>
				<logViolationsToConsole>true</logViolationsToConsole>
				<failOnViolation>false</failOnViolation>
				<checkstyleRules>
					<module name="Checker">
						<module name="FileTabCharacter" />
					</module>
				</checkstyleRules>
			</configuration>
		</plugin>
		<plugin>
			<artifactId>maven-surefire-plugin</artifactId>
			<version>${version.surefire.plugin}</version>
			<configuration>
				<enableAssertions>true</enableAssertions>
				<includes>
					<include>**/*TestCase.java</include>
					<include>**/*Test.java</include>
					<include>**/Test*.java</include>
				</includes>
				<excludes>
					<exclude>**/Abstract*TestCase.java</exclude>
					<!-- hack to prevent anonymous inner classes in Tests from being run 
						as tests -->
					<include>**/Test*$*.java</include>
				</excludes>
				<systemPropertyVariables>
					<user.dir>${basedir}/target</user.dir>
					<java.io.tmpdir>${basedir}/target</java.io.tmpdir>
				</systemPropertyVariables>
			</configuration>
		</plugin>
		<!-- Build a test-jar for each project, so that src/test/* resources and 
			classes can be used in other projects. Also customize how the jar files are 
			assembled. -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jar-plugin</artifactId>
			<executions>
				<execution>
					<goals>
						<goal>test-jar</goal>
					</goals>
				</execution>
			</executions>
			<configuration>
				<archive>
					<manifest>
						<addDefaultSpecificationEntries> true</addDefaultSpecificationEntries>
						<addDefaultImplementationEntries> true</addDefaultImplementationEntries>
					</manifest>
					<manifestEntries>
						<Implementation-URL>${project.url}</Implementation-URL>
					</manifestEntries>
				</archive>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-source-plugin</artifactId>
			<executions>
				<execution>
					<id>attach-sources</id>
					<goals>
						<goal>jar-no-fork</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
		<plugin>
			<groupId>org.apache.felix</groupId>
			<artifactId>maven-bundle-plugin</artifactId>
			<extensions>true</extensions>
		</plugin>
		<plugin>
			<artifactId>maven-release-plugin</artifactId>
			<configuration>
				<!-- During release:perform, enable the "release" profile -->
				<releaseProfiles>final-release</releaseProfiles>
				<goals>deploy</goals>
			</configuration>
		</plugin>
	</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId> 
			<scope>test</scope>
		</dependency>
		<dependency>
            <groupId>com.github.stephenc.jcip</groupId>
            <artifactId>jcip-annotations</artifactId>
            <scope>test</scope>
        </dependency>
   </dependencies>
	<dependencyManagement>
		<dependencies>
            <!-- import infinispan bom -->
            <dependency>
                <groupId>org.teiid</groupId>
                <artifactId>teiid-bom</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- ====== -->            
            <!-- Import the core parent to get all the managed dependencies from core -->
            <dependency>
                <groupId>org.wildfly.core</groupId>
                <artifactId>wildfly-core-parent</artifactId>
                <type>pom</type>
                <version>${version.org.wildfly.core}</version>
                <scope>import</scope>
            </dependency>
            <dependency>
			    <groupId>org.wildfly</groupId>
			    <artifactId>wildfly-parent</artifactId>
                <type>pom</type>
                <version>${version.org.wildfly}</version>
                <scope>import</scope>			    
            </dependency>
        </dependencies>
	</dependencyManagement>
	<modules>
        <module>build-configuration</module>
		<module>common-core</module>
		<module>api</module>
		<module>client</module>
		<module>admin</module>
		<module>data-quality</module>
		<module>engine</module>
		<module>metadata</module>
		<module>runtime</module>
		<module>adminshell</module>
		<module>hibernate-dialect</module>
		<module>eclipselink-platform</module>		
		<module>olingo-common</module>
		<module>olingo-patches</module>
		<module>olingo</module>
		<module>jboss-admin</module>
		<module>jboss-integration</module>
		<module>jboss-security</module>
		<module>rest-service</module>
		<module>teiid-feature-pack</module>
        <module>connectors</module>
		<module>test-integration</module>
		<module>saxon-xom</module>
	</modules>
</project>
