<!--
 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>
	<groupId>org.apache.log4php</groupId>
	<artifactId>apache-log4php</artifactId>
	<packaging>pom</packaging>
	<version>2.1.0</version>
	<name>Apache log4php</name>
	<description>Logging framework for PHP</description>
	<url>http://logging.apache.org/log4php</url>
	
	<issueManagement>
		<system>JIRA</system>
		<url>http://issues.apache.org/jira/browse/LOG4PHP</url>
	</issueManagement>
	
	<ciManagement>
		<system>buildbot</system>
		<url>http://ci.apache.org/builders/log4php-trunk</url>
	</ciManagement>
	
	<mailingLists>
		<mailingList>
			<name>log4php-user</name>
			<subscribe>log4php-user-subscribe@logging.apache.org</subscribe>
			<unsubscribe>log4php-user-unsubscribe@logging.apache.org</unsubscribe>
			<post>log4php-user@logging.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4php-user/</archive>
			<otherArchives>
				<otherArchive>http://markmail.org/search/list:org.apache.logging.log4php-user</otherArchive>
			</otherArchives>
		</mailingList>
		<mailingList>
			<name>log4php-dev</name>
			<subscribe>log4php-dev-subscribe@logging.apache.org</subscribe>
			<unsubscribe>log4php-dev-unsubscribe@logging.apache.org</unsubscribe>
			<post>log4php-dev@logging.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4php-dev/</archive>
			<otherArchives>
				<otherArchive>http://markmail.org/search/list:org.apache.logging.log4php-dev</otherArchive>
			</otherArchives>
		</mailingList>
	</mailingLists>
	
	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
	
	<scm>
		<connection>scm:svn:https://svn.apache.org/repos/asf/logging/log4php/tags/apache-log4php-2.1.0</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4php/tags/apache-log4php-2.1.0</developerConnection>
		<url>http://svn.apache.org/viewcvs.cgi/logging/log4php/tags/apache-log4php-2.1.0</url>
	</scm>
	
	<organization>
		<name>Apache Software Foundation</name>
		<url>http://www.apache.org</url>
	</organization>

	<developers>
		<developer>
			<name>Alvero Carrasco</name>
			<email>alvero at apache.org</email>
		</developer>
		<developer>
			<name>Knut Urdalen</name>
			<email>kurdalen at apache.org</email>
		</developer>
		<developer>
			<name>Christian Grobmeier</name>
			<email>grobmeier at apache.org</email>
		</developer>
		<developer>
			<name>Gavin McDonald </name>
			<email>gmcdonald at apache.org</email>
		</developer>
		<developer>
			<name>Christian Hammers</name>
			<email>chammers at apache.org</email>
		</developer>
		<developer>
			<name>Ivan Habunek</name>
			<email>ihabunek at apache.org</email>
		</developer>
	</developers>
	
	<contributors>
		<contributor>
			<name>Vladimir Gorej</name>
		</contributor>
		<contributor>
			<name>Moritz Schmidt</name>
		</contributor>
		<contributor>
			<name>Tommy Montgomery</name>
		</contributor>
		<contributor>
			<name>Florian Platzer</name>
		</contributor>
		<contributor>
			<name>Marco Vassura</name>
		</contributor>
		<contributor>
			<name>Sergio Strampelli</name>
		</contributor>
		<contributor>
			<name>Abel Gonzalez</name>
		</contributor>
		<contributor>
			<name>Domenico Lordi</name>
		</contributor>
		<contributor>
			<name>Ilker Kiris</name>
		</contributor>
		<contributor>
			<name>Blake Watters</name>
		</contributor>
		<contributor>
			<name>Simon Wiest</name>
		</contributor>
	</contributors>

	<properties>
		<surefire.report>target/surefire-reports</surefire.report>
		<coverage.report>target/site/coverage-report</coverage.report>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.6</version>
				
				<dependencies>
					<!-- Replace Xalan XSLT engine with Saxon. Required for phpunit_to_surefire.xslt to work. -->
					<dependency>
						<groupId>net.sf.saxon</groupId>
						<artifactId>saxon</artifactId>
						<version>8.7</version>
					</dependency>
				</dependencies>
				
				<executions>
					<execution>
						<id>syntax-check</id>
						<phase>process-sources</phase>
						<configuration>
							<target>
								<ant target="syntax-check" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					
					<execution>
						<id>pear-package</id>
						<phase>package</phase>
						<configuration>
							<target>
								<ant target="pear-package" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>

					<execution>
						<id>api-docs</id>
						<phase>pre-site</phase>
						<configuration>
							<target>
								<ant target="api-docs" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					
					<execution>
						<id>unit-testing</id>
						<phase>test</phase>
						<configuration>
							<target>
								<ant target="unit-testing" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					
					<execution>
						<id>post-site</id>
						<phase>post-site</phase>
						<configuration>
							<target>
								<ant target="post-site" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					
					<execution>
						<id>site-deploy</id>
						<phase>site-deploy</phase>
						<configuration>
							<target>
								<ant target="site-deploy" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.8.1</version>
				<configuration>
					<workingDirectory>target</workingDirectory>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2.1</version>
				<configuration>
					<descriptors>
						<descriptor>src/assembly/src.xml</descriptor>
					</descriptors>
					<appendAssemblyId>true</appendAssemblyId>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			
			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<version>0.6</version>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<goals>site assembly:assembly</goals>
				</configuration>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-site-plugin</artifactId>
				<version>3.0-beta-3</version>
				<configuration>

					<!-- Override default rendering (only required to add a custom footer) -->
					<!-- This can be removed once <footer> tag is supported in site.xml.  -->
					<templateFile>${basedir}/src/site/site.vm</templateFile>

					<!-- Configure additional reports on the site -->
					<reportPlugins>

						<!-- Project info report -->
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-project-info-reports-plugin</artifactId>
							<version>2.4</version>
							<reportSets>
								<reportSet>
									<reports>
										<report>cim</report>	
										<report>scm</report>
										<report>dependencies</report>
										<report>license</report>
										<report>project-team</report>
										<report>issue-tracking</report>
										<report>mailing-list</report>
									</reports>
								</reportSet>
							</reportSets>
						</plugin>
						
						<!-- Changes report -->
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-changes-plugin</artifactId>
							<version>2.6</version>
							<reportSets>
								<reportSet>
									<reports>
										<report>changes-report</report>
										<report>jira-report</report>
									</reports>
								</reportSet>
							</reportSets>
							<configuration>
								<statusIds>Resolved, Closed</statusIds>
								<columnNames>Type,Key,Summary,Assignee,Status,Resolution,Fix Version</columnNames>
							</configuration>
						</plugin>
						
						<!-- Surefire report -->
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-surefire-report-plugin</artifactId>
							<version>2.8.1</version>
						</plugin>
			
						<!-- RAT report -->
						<plugin>
							<groupId>org.apache.rat</groupId>
							<artifactId>apache-rat-plugin</artifactId>
							<version>0.6</version>
						</plugin>
					</reportPlugins>
				</configuration>
			</plugin>
		</plugins>
	</build>
	
	<dependencies>
	</dependencies>
	
	<distributionManagement>
		<site>
			<id>logging.site</id>
			<url>file:///${user.dir}/target/site-deploy</url>
		</site>
	</distributionManagement>
</project>
