<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>2.5</version>
		<relativePath>../</relativePath>
	</parent>
	<artifactId>log4j-core-api</artifactId>
	<packaging>jar</packaging>
	<name>Apache Log4j Core and Api</name>
	<description>The Apache Log4j Implementation</description>
	<properties>
		<log4jParentDir>${basedir}/..</log4jParentDir>
		<docLabel>Core Documentation</docLabel>
		<projectDir>/core</projectDir>
	</properties>
	<dependencies>
		<!-- Naturally, all implementations require the log4j-api JAR -->
		<!-- <dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
		</dependency> -->
		<!-- Used for OSGi bundle support -->
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.core</artifactId>
			<scope>provided</scope>
		</dependency>
		<!-- Required for AsyncLoggers -->
		<!-- <dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<optional>true</optional>
		</dependency> -->
		<!-- Required for JSON support -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Required for JSON support -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Required for YAML support (including JSON requirements) -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Required for XML layout and receiver support -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-xml</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- POM for jackson-dataformat-xml 2.5.4 depends on woodstox-core-asl 
			4.3.0 -->
		<dependency>
			<groupId>org.codehaus.woodstox</groupId>
			<artifactId>woodstox-core-asl</artifactId>
			<version>4.3.0</version>
			<optional>true</optional>
		</dependency>
		<!-- Required for console color support in Windows -->
		<dependency>
			<groupId>org.fusesource.jansi</groupId>
			<artifactId>jansi</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Required for SMTPAppender -->
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>javax.mail</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Used for JPA appenders (needs an implementation of course) -->
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>javax.persistence</artifactId>
			<scope>compile</scope>
			<optional>true</optional>
		</dependency>
		<!-- Used for JMS appenders (needs an implementation of course) -->
		<dependency>
			<groupId>org.jboss.spec.javax.jms</groupId>
			<artifactId>jboss-jms-api_1.1_spec</artifactId>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>
		<!-- Used for Kafka appender -->
		<dependency>
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Used for ZeroMQ JeroMQ appender -->
		<dependency>
			<groupId>org.zeromq</groupId>
			<artifactId>jeromq</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Used for compressing to formats other than zip and gz -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- Used for the CSV layout -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-csv</artifactId>
			<optional>true</optional>
		</dependency>

		<!-- TEST DEPENDENCIES -->

		<!-- Pull in useful test classes from API -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<!-- Zeroconf advertiser tests -->
		<dependency>
			<groupId>javax.jmdns</groupId>
			<artifactId>jmdns</artifactId>
			<version>3.4.1</version>
			<scope>test</scope>
		</dependency>
		<!-- Log4j 1.2 tests -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
			<scope>test</scope>
		</dependency>
		<!-- SLF4J tests -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-ext</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- JUnit, naturally -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-all</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Mocking framework for use with JUnit -->
		<dependency>
			<groupId>org.easymock</groupId>
			<artifactId>easymock</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Embedded JDBC drivers for database appender tests -->
		<dependency>
			<groupId>org.hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- JPA Tests -->
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>org.eclipse.persistence.jpa</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- JNDI and JMS tests -->
		<dependency>
			<groupId>org.mockejb</groupId>
			<artifactId>mockejb</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-broker</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Logback performance tests -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- OSGi tests -->
		<dependency>
			<groupId>org.eclipse.osgi</groupId>
			<artifactId>org.eclipse.osgi</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.framework</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- GELF -->
		<dependency>
			<groupId>net.javacrumbs.json-unit</groupId>
			<artifactId>json-unit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Other -->
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache-extras.beanshell</groupId>
			<artifactId>bsh</artifactId>
			<version>2.0b5</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy-all</artifactId>
			<version>2.4.5</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${compiler.plugin.version}</version><!--$NO-MVN-MAN-VER$-->
				<executions>
					<execution>
						<!-- disable annotation processing for first pass -->
						<id>default-compile</id>
						<goals>
							<goal>compile</goal>
						</goals>
						<phase>compile</phase>
						<configuration>
							<proc>none</proc>
						</configuration>
					</execution>
					<execution>
						<!-- then do a processing-only pass to generate plugins .dat file -->
						<id>process-plugins</id>
						<goals>
							<goal>compile</goal>
						</goals>
						<phase>process-classes</phase>
						<configuration>
							<proc>only</proc>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<excludedGroups>
						org.apache.logging.log4j.categories.PerformanceTests
					</excludedGroups>
					<forkCount>1</forkCount>
					<reuseForks>false</reuseForks>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<configuration>
					<includes>
						<include>**/*.java</include>
					</includes>
					<excludes>
						<exclude>**/ForceNoDefClassFoundError.*</exclude>
					</excludes>
					<groups>
						org.apache.logging.log4j.categories.PerformanceTests
					</groups>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>org.apache.logging.log4j.core</Bundle-SymbolicName>
						<!-- TODO: exclude internal classes from export -->
						<Export-Package>org.apache.logging.log4j.core.*</Export-Package>
						<Import-Package>
							sun.reflect;resolution:=optional,
							*
						</Import-Package>
						<Bundle-Activator>org.apache.logging.log4j.core.osgi.Activator</Bundle-Activator>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-changes-plugin</artifactId>
				<version>${changes.plugin.version}</version>
				<reportSets>
					<reportSet>
						<reports>
							<report>changes-report</report>
						</reports>
					</reportSet>
				</reportSets>
				<configuration>
					<issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
					<useJql>true</useJql>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
				<version>${checkstyle.plugin.version}</version>
				<configuration>
					<!--<propertiesLocation>${vfs.parent.dir}/checkstyle.properties</propertiesLocation> -->
					<configLocation>${log4jParentDir}/checkstyle.xml</configLocation>
					<suppressionsLocation>${log4jParentDir}/checkstyle-suppressions.xml</suppressionsLocation>
					<enableRulesSummary>false</enableRulesSummary>
					<propertyExpansion>basedir=${basedir}</propertyExpansion>
					<propertyExpansion>licensedir=${log4jParentDir}/checkstyle-header.txt</propertyExpansion>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${javadoc.plugin.version}</version>
				<configuration>
					<bottom><![CDATA[<p align="center">Copyright &#169; {inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.<br />
            Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo,
            and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p>]]></bottom>
					<!-- module link generation is completely broken in the javadoc plugin 
						for a multi-module non-aggregating project -->
					<detectOfflineLinks>false</detectOfflineLinks>
					<linksource>true</linksource>
					<links>
						<link>http://docs.oracle.com/javaee/6/api/</link>
						<link>http://www.osgi.org/javadoc/r4v43/core/</link>
						<link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
					</links>
					<groups>
						<group>
							<title>Core API</title>
							<packages>org.apache.logging.log4j.core</packages>
						</group>
						<group>
							<title>Configuration</title>
							<packages>org.apache.logging.log4j.core.config*:org.apache.logging.log4j.core.selector</packages>
						</group>
						<group>
							<title>Core Plugins</title>
							<packages>org.apache.logging.log4j.core.appender*:org.apache.logging.log4j.core.filter:org.apache.logging.log4j.core.layout:org.apache.logging.log4j.core.lookup:org.apache.logging.log4j.core.pattern</packages>
						</group>
						<group>
							<title>Tools</title>
							<packages>org.apache.logging.log4j.core.net*:org.apache.logging.log4j.core.tools</packages>
						</group>
						<group>
							<title>Internals</title>
							<packages>org.apache.logging.log4j.core.async:org.apache.logging.log4j.core.impl:org.apache.logging.log4j.core.util:org.apache.logging.log4j.core.osgi:org.apache.logging.log4j.core.jackson:org.apache.logging.log4j.core.jmx</packages>
						</group>
					</groups>
				</configuration>
				<reportSets>
					<reportSet>
						<id>non-aggregate</id>
						<reports>
							<report>javadoc</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>findbugs-maven-plugin</artifactId>
				<version>${findbugs.plugin.version}</version>
				<configuration>
					<fork>true</fork>
					<jvmArgs>-Duser.language=en</jvmArgs>
					<threshold>Normal</threshold>
					<effort>Default</effort>
					<excludeFilterFile>${log4jParentDir}/findbugs-exclude-filter.xml</excludeFilterFile>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jxr-plugin</artifactId>
				<version>${jxr.plugin.version}</version>
				<reportSets>
					<reportSet>
						<id>non-aggregate</id>
						<reports>
							<report>jxr</report>
						</reports>
					</reportSet>
					<reportSet>
						<id>aggregate</id>
						<reports>
							<report>aggregate</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>${pmd.plugin.version}</version>
				<configuration>
					<targetJdk>${maven.compile.target}</targetJdk>
				</configuration>
			</plugin>
		</plugins>
	</reporting>
</project>