<!--
 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>log4j</groupId>
		<artifactId>apache-log4j-companions-parent</artifactId>
		<version>1.0-SNAPSHOT</version>
		<relativePath>.../apache-log4j-companions-parent</relativePath>
	</parent>
	<groupId>log4j</groupId>
	<artifactId>apache-log4j-component</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>Apache Component Companion for log4j 1.2.</name>
	<description>This companion emulates the log4j 1.3 Component Framework to
  simplify the back-porting of code that made use of its services.  It does
  not provide any immediately useful functionality to log4j by itself,
  but is used by Receivers and Chainsaw.</description>
	<url>http://logging.apache.org:80/log4j/companions/component</url>
	<issueManagement>
		<system>Bugzilla</system>
		<url>http://issues.apache.org/bugzilla/</url>
	</issueManagement>
	<ciManagement>
		<system>Gump</system>
		<url>http://vmgump.apache.org/gump/public/logging-log4j-component/logging-log4j-component/index.html</url>
	</ciManagement>
	<mailingLists>
		<mailingList>
			<name>log4j-user</name>
			<subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
			<unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
			<post>log4j-user@logging.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</archive>
			<otherArchives>
				<otherArchive>http://marc.theaimsgroup.com/?l=log4j-user&amp;r=1&amp;w=2</otherArchive>
				<otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
			</otherArchives>
		</mailingList>
		<mailingList>
			<name>log4j-dev</name>
			<subscribe>log4j-dev-subscribe@logging.apache.org</subscribe>
			<unsubscribe>log4j-dev-unsubscribe@logging.apache.org</unsubscribe>
			<post>log4j-dev@logging.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4j-dev/</archive>
			<otherArchives>
				<otherArchive>http://marc.theaimsgroup.com/?l=log4j-dev&amp;r=1&amp;w=2</otherArchive>
				<otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</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:http://svn.apache.org/repos/asf/logging/log4j/companions/component/trunk</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/companions/component/trunk</developerConnection>
		<url>http://svn.apache.org/viewcvs.cgi/logging/log4j/companions/component/trunk</url>
	</scm>
	<organization>
		<name>Apache Software Foundation</name>
		<url>http://www.apache.org</url>
	</organization>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.4</source>
					<target>1.4</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-site-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<templateFile>${basedir}/src/site/maven-site.vm</templateFile>
					<reportPlugins>
						<plugin>
							<artifactId>maven-project-info-reports-plugin</artifactId>
							<version>2.4</version>
							<reportSets>
								<reportSet>
									<reports>
										<report>scm</report>
										<report>dependencies</report>
										<report>cim</report>
										<report>issue-tracking</report>
										<report>mailing-list</report>
										<report>license</report>
									</reports>
								</reportSet>
							</reportSets>
						</plugin>

						<plugin>
							<artifactId>maven-changes-plugin</artifactId>
							<reportSets>
								<reportSet>
									<reports>
										<report>changes-report</report>
									</reports>
								</reportSet>
							</reportSets>
							<configuration>
								<issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
							</configuration>
						</plugin>
						<plugin>
							<artifactId>maven-pmd-plugin</artifactId>
							<configuration>
								<encoding>UTF-8</encoding>
							</configuration>
						</plugin>
						<plugin>
							<artifactId>maven-javadoc-plugin</artifactId>
							<configuration>
								<encoding>UTF-8</encoding>
								<bottom><![CDATA[<p>Copyright ]]>©
									{currentYear} The Apache Software Foundation. Licensed under
									the <![CDATA[<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p>
<p>Apache Extras Companion for Apache log4j, Apache log4j and Apache are trademarks of the Apache Software Foundation.</p>]]></bottom>
							</configuration>
						</plugin>
						<plugin>
							<groupId>org.apache.rat</groupId>
							<artifactId>apache-rat-plugin</artifactId>
							<version>0.7</version>
							<configuration>
								<excludes>
									<!-- empty file -->
									<exclude>src/site/resources/css/site.css</exclude>
									<!-- sample log file -->
									<exclude>src/test/resources/org/apache/log4j/plugins/plugins.PluginTestCase.test1.txt</exclude>
								</excludes>
							</configuration>
						</plugin>
					</reportPlugins>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-release-plugin</artifactId>
				<configuration>
					<goals>site-deploy</goals>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>site</phase>
						<id>untag-site</id>
						<configuration>
							<tasks>
								<taskdef name="replaceregexp"
									classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp" />
								<replaceregexp file="target/site/source-repository.html"
									match="/tags/[^ &quot;&apos;&lt;]*" replace="/trunk" flags="g" />
								<replaceregexp match="-- Generated by (.*) on .*--"
									replace="-- Generated by \1 --" flags="g">
									<fileset dir="target/site/apidocs" includes="**/*.html" />
								</replaceregexp>
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					<execution>
						<phase>post-site</phase>
						<id>post-site</id>
						<configuration>
							<tasks>
								<ant target="post-site" />
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					<execution>
						<phase>site-deploy</phase>
						<id>site-deploy</id>
						<configuration>
							<tasks>
								<ant target="site-deploy" />
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>ant</groupId>
						<artifactId>ant-nodeps</artifactId>
						<version>1.6.5</version>
					</dependency>
					<dependency>
						<groupId>ant</groupId>
						<artifactId>ant</artifactId>
						<version>1.6.5</version>
					</dependency>
					<dependency>
						<groupId>ant-contrib</groupId>
						<artifactId>ant-contrib</artifactId>
						<version>1.0b2</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

	<distributionManagement>
		<repository>
			<id>logging.repo</id>
			<url>scp://people.apache.org/www/people.apache.org/builds/logging/repo/</url>
		</repository>
		<site>
			<id>logging.site</id>
			<url>scp://localhost/${user.dir}/target/site-deploy</url>
		</site>
	</distributionManagement>
</project>
