<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
	license agreements. See the NOTICE file distributed with this work for additional 
	information regarding copyright ownership. The ASF licenses this file to 
	you under the Apache License, Version 2.0 (the "License"); you may not use 
	this file except in compliance with the License. You may obtain a copy of 
	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
	by applicable law or agreed to in writing, software distributed under the 
	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
	OF ANY KIND, either express or implied. See the License for the specific 
	language governing permissions and limitations under the License. -->
<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>
	<parent>
		<groupId>org.apache.aries</groupId>
		<artifactId>parent</artifactId>
		<version>2.0.1</version>
		<relativePath>../parent/pom.xml</relativePath>
	</parent>
	<groupId>org.apache.aries.tx-control</groupId>
	<artifactId>tx-control</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<description>Transaction Control service, including Resource Provider implementations.</description>
	<scm>
		<connection>
            scm:svn:http://svn.apache.org/repos/asf/aries/trunk/tx-control
        </connection>
		<developerConnection>
            scm:svn:https://svn.apache.org/repos/asf/aries/trunk/tx-control
        </developerConnection>
		<url>
            http://svn.apache.org/viewvc/aries/trunk/tx-control
        </url>
	</scm>

	<profiles>
		<profile>
			<id>jdk18</id>
			<activation>
				<jdk>1.8</jdk>
			</activation>
			<modules>
				<module>tx-control-api</module>
				<module>tx-control-service-common</module>
				<module>tx-control-service-local</module>
				<module>tx-control-service-xa</module>
				<module>tx-control-provider-jdbc-common</module>
				<module>tx-control-provider-jdbc-local</module>
				<module>tx-control-provider-jdbc-xa</module>
				<module>tx-control-provider-jpa-local</module>
				<module>tx-control-provider-jpa-xa</module>
				<module>tx-control-itests</module>
				<module>tx-control-jpa-itests</module>
			</modules>
		</profile>
	</profiles>

</project>