<?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</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>blazeds-4.7.0</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>

            <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>


	<!-- 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>
