<?xml version="1.0" encoding="UTF-8"?>
<!--

  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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache</groupId>
		<artifactId>apache</artifactId>
		<version>16</version>
	</parent>

	<groupId>org.apache.flex.blazeds</groupId>
	<artifactId>blazeds</artifactId>
	<version>4.7.0.0-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>Apache Flex: BlazeDS</name>

	<mailingLists>
		<mailingList>
			<name>Apache Flex Dev List</name>
			<subscribe>dev-subscribe@flex.apache.org</subscribe>
			<unsubscribe>dev-unsubscribe@flex.apache.org</unsubscribe>
			<post>dev@flex.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/flex-dev/</archive>
		</mailingList>
		<mailingList>
			<name>Apache Flex User List</name>
			<subscribe>users-subscribe@flex.apache.org</subscribe>
			<unsubscribe>users-unsubscribe@flex.apache.org</unsubscribe>
			<post>users@flex.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/flex-users/</archive>
		</mailingList>
	</mailingLists>

	<scm>
		<connection>scm:git:https://git-wip-us.apache.org/repos/asf/flex-blazeds.git</connection>
		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/flex-blazeds.git</developerConnection>
		<url>https://git-wip-us.apache.org/repos/asf/flex-blazeds.git</url>
		<tag>HEAD</tag>
	</scm>

	<modules>
		<module>common</module>
		<module>core</module>
		<module>proxy</module>
		<module>remoting</module>
		<module>opt</module>
		<module>testsuite</module>
	</modules>

	<build>
		<plugins>
           	<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<includes>
						<include>**/*Tests.java</include>
						<include>**/*Test.java</include>
					</includes>
				</configuration>
			</plugin>
		</plugins>
	</build>


	<!-- When building on the apache ci server, we want to get some source-release archives -->
	<profiles>
		<profile>
			<id>flex-ci-build</id>

			<build>
				<plugins>
					<plugin>
						<artifactId>maven-assembly-plugin</artifactId>
						<version>2.5.1</version>
						<executions>
							<execution>
								<id>assemble-sources-releases</id>
								<phase>package</phase>
								<goals>
									<goal>single</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<descriptors>
								<descriptor>src/assembly/assemble-zip.xml</descriptor>
								<descriptor>src/assembly/assemble-gz.xml</descriptor>
							</descriptors>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

</project>
