<!--
 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>log4j</groupId>
  <artifactId>apache-log4j-receivers</artifactId>
  <packaging>jar</packaging>
  <version>1.1-SNAPSHOT</version>
  <name>Apache Receivers Companion for log4j 1.2.</name>
  <description>This companion provides a collection of receivers from the log4j 1.3 project for use with log4j 1.2.</description>
  <url>http://logging.apache.org:80/log4j/companions/receivers</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-receivers/logging-log4j-receivers/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/receivers/trunk</connection>
	<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/companions/receivers/trunk</developerConnection>
	<url>http://svn.apache.org/viewcvs.cgi/logging/log4j/companions/receivers/trunk</url>
</scm>
<organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org</url>
</organization>
<build>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <workingDirectory>target</workingDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.2</source>
            <target>1.1</target>
        </configuration>
      </plugin>
	  <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
                <manifestSections>
                <manifestSection>
                    <name>org.apache.log4j</name>
                    <manifestEntries>
                        <Implementation-Title>${project.name}</Implementation-Title>
                        <Implementation-Version>${project.version}</Implementation-Version>
                        <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor>
                    </manifestEntries>
                </manifestSection>
                </manifestSections>
          </archive>
        </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/[^ ]*" 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-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b2</version>
          </dependency>
        </dependencies>
      </plugin>	 
	  <plugin>
         <artifactId>maven-assembly-plugin</artifactId>
         <configuration>
           <descriptors>
              <descriptor>src/assembly/bin.xml</descriptor>
           </descriptors>
           <appendAssemblyId>false</appendAssemblyId>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>assembly</goal>
                </goals>
            </execution>
        </executions>
	 </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>jar</goal>
                    <goal>javadoc</goal>
                </goals>
            </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
      </plugin>     
    </plugins>
</build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <version>1.8.0.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.15-SNAPSHOT</version>
    </dependency>    
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-component</artifactId>
      <version>1.0</version>
    </dependency>    
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-extras</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>oro</groupId>
      <artifactId>oro</artifactId>
      <version>2.0.8</version>
    </dependency>  
    <dependency>
      <groupId>javax.jms</groupId>
      <artifactId>jms</artifactId>
      <version>1.1</version>
    </dependency>  
  </dependencies>
  <reporting>
    <excludeDefaults>true</excludeDefaults>  
    <plugins>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <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>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>jxr-maven-plugin</artifactId>
      </plugin>
      <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
              <goals>site-deploy</goals>
          </configuration>
      </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>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
 <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>

