<?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.ws</groupId>
        <artifactId>ws-parent</artifactId>
        <version>3</version>
    </parent>

    <groupId>org.apache.ws.commons.axiom</groupId>
    <artifactId>axiom</artifactId>
    <version>1.3.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Axiom</name>
    <description>The root/parent POM for Apache Axiom</description>
    <url>http://ws.apache.org/axiom/</url>
    <inceptionYear>2004</inceptionYear>

    <developers>
        <developer>
            <name>Saminda Abeyruwan</name>
            <id>saminda</id>
            <email>saminda AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Afkham Azeez</name>
            <id>azeez</id>
            <email>azeez AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Eran Chinthaka</name>
            <id>chinthaka</id>
            <email>chinthaka AT wso2.com</email>
            <organization>WSO2</organization>
            <url>http://www.apache.org/~chinthaka</url>
        </developer>
        <developer>
            <name>Glen Daniels</name>
            <id>gdaniels</id>
            <email>gdaniels AT apache.org</email>
            <organization>Sonic Software</organization>
        </developer>
        <developer>
            <name>Jaliya Ekanayake</name>
            <id>jaliya</id>
            <email>jaliya AT opensource.lk</email>
            <organization>Virtusa / Lanka Software Foundation</organization>
            <url>http://www.apache.org/~jaliya</url>
        </developer>
        <developer>
            <name>Senaka Fernando</name>
            <id>senaka</id>
            <email>senaka AT apache.org</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Nandana Mihindukulasooriya</name>
            <id>nandana</id>
            <email>nandana AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Ruchith Fernando</name>
            <id>ruchith</id>
            <email>ruchith AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>thilina</id>
            <name>Thilina Gunarathne</name>
            <email>thilina AT wso2.com</email>
            <url>http://www.apache.org/~thilina</url>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Chathura Herath</name>
            <id>chathura</id>
            <email>chathura AT opensource.lk</email>
            <organization>LSF/MIT</organization>
            <url>http://www.apache.org/~chathura</url>
        </developer>
        <developer>
            <name>Deepal Jayasinghe</name>
            <id>deepal</id>
            <email>deepal AT wso2.com</email>
            <organization>WSO2</organization>
            <url>http://www.apache.org/~deepal</url>
        </developer>
        <developer>
            <name>Chatra Nakkawita</name>
            <id>chatra</id>
            <email>chatra AT WSO2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Srinath Perera</name>
            <id>hemapani</id>
            <email>hemapani AT apache.org</email>
            <organization>Lanka Software Foundation</organization>
            <url>http://www.apache.org/~hemapani</url>
        </developer>
        <developer>
            <name>Ajith Ranabahu</name>
            <id>ajith</id>
            <email>ajith AT wso2.com</email>
            <organization>WSO2</organization>
            <url>http://www.apache.org/~ajith</url>
        </developer>
        <developer>
            <name>Venkat Reddy</name>
            <id>venkat</id>
            <email>vreddyp AT gmail.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <name>Rich Scheuerle</name>
            <id>scheu</id>
            <email>scheu AT us.ibm.com</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <name>Ashutosh Shahi</name>
            <id>ashu</id>
            <email>Ashutosh.Shahi AT ca.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <name>Aleksander Slominski</name>
            <id>alek</id>
            <email>aslom AT cs.indiana.edu</email>
            <organization>Indiana University Extreme! Computing Lab</organization>
        </developer>
        <developer>
            <name>Davanum Srinivas</name>
            <id>dims</id>
            <email>davanum AT gmail.com</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <name>Jayachandra Sekhara Rao Sunkara</name>
            <id>jaya</id>
            <email>jayachandra AT gmail.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <name>Andreas Veithen</name>
            <id>veithen</id>
            <email>veithen AT google.com</email>
            <url>http://veithen.github.io</url>
            <organization>Google</organization>
        </developer>
        <developer>
            <name>Dasarath Weerathunga</name>
            <id>dasarath</id>
            <email>dasarath AT opensource.lk</email>
            <organization>Lanka Software Foundation</organization>
        </developer>
        <developer>
            <name>Sanjiva Weerawarana</name>
            <id>sanjiva</id>
            <email>sanjiva AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
    </developers>
    <contributors>
        <contributor>
            <name>Dharshana Dias</name>
            <email />
            <organization>Lanka Software Foundation / University of Moratuwa</organization>
        </contributor>
        <contributor>
            <name>Anushka Kumara</name>
            <email>anushkakumar AT gmail.com</email>
            <organization>Lanka Software Foundation / University of Moratuwa</organization>
        </contributor>
        <contributor>
            <name>Chinthaka Thilakarathne</name>
            <email />
            <organization>Lanka Software Foundation / University of Moratuwa</organization>
        </contributor>
        <contributor>
            <name>Jochen Wiedmann</name>
            <email>jochen.wiedmann AT gmail.com</email>
        </contributor>
    </contributors>

    <modules>
        <module>buildutils</module>
        <module>axiom-api</module>
        <module>axiom-compat</module>
        <module>axiom-jaxb</module>
        <module>axiom-all</module>
        <module>samples</module>
        <module>systests</module>
        <module>devguide</module>
        <module>userguide</module>
        <module>apidocs</module>
        <module>distribution</module>
        <module>testing</module>
        <module>aspects</module>
        <module>implementations</module>
        <module>components</module>
    </modules>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/ws-axiom.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/ws-axiom.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=ws-axiom.git;a=summary</url>
    </scm>
    <issueManagement>
        <system>JIRA</system>
        <url>http://issues.apache.org/jira/browse/AXIOM</url>
    </issueManagement>
    <distributionManagement>
        <site>
            <id>website</id>
            <url>scm:svn:https://svn.apache.org/repos/asf/webservices/website/axiom-staging</url>
        </site>
    </distributionManagement>

    <properties>
        <osgi.version>5.0.0</osgi.version>
        <stax.impl.groupid>org.codehaus.woodstox</stax.impl.groupid>
        <stax.impl.artifact>woodstox-core-asl</stax.impl.artifact>
        <stax.impl.version>4.2.0</stax.impl.version>
        <failIfNoTests>false</failIfNoTests>
        <!--
        <stax.impl.groupid>com.sun.xml.stream</stax.impl.groupid>
        <stax.impl.artifact>sjsxp</stax.impl.artifact>
        <stax.impl.version>1.0.1</stax.impl.version>
        -->
        <!--
        <stax.impl.groupid>stax</stax.impl.groupid>
        <stax.impl.artifact>stax</stax.impl.artifact>
        <stax.impl.version>1.2.0</stax.impl.version>
        -->
        <aspectj.version>1.9.1</aspectj.version>
        <shade.plugin.version>2.3</shade.plugin.version>
        <spring.version>5.0.1.RELEASE</spring.version>
        <springws.version>3.0.3.RELEASE</springws.version>
        <exam.version>4.12.0</exam.version>
        
        <skipDeploy>false</skipDeploy>
    </properties>

    <repositories>
        <!-- Need to declare this here so that Maven can download snapshot versions of the parent POM -->
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>http://repository.apache.org/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>http://repository.apache.org/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
        <pluginRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>javax.mail</artifactId>
                <version>1.6.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.activation</groupId>
                        <artifactId>activation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>${stax.impl.groupid}</groupId>
                <artifactId>${stax.impl.artifact}</artifactId>
                <version>${stax.impl.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>stax</groupId>
                        <artifactId>stax-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.xml.stream</groupId>
                        <artifactId>stax-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>jaxen</groupId>
                <artifactId>jaxen</artifactId>
                <version>1.1.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mime4j-core</artifactId>
                <version>0.8.3</version>
            </dependency>
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.core</artifactId>
                <version>${osgi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.compendium</artifactId>
                <version>${osgi.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>com.google.truth</groupId>
                <artifactId>truth</artifactId>
                <version>0.42</version>
            </dependency>
            <dependency>
                <groupId>xalan</groupId>
                <artifactId>xalan</artifactId>
                <version>2.7.1</version>
            </dependency>
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
                <version>2.11.0</version>
            </dependency>
            <dependency>
                <!-- Recent versions of Xerces require this (because they need org.w3c.dom.ElementTraversal) -->
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
                <version>1.4.01</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.woodstox</groupId>
                <artifactId>stax2-api</artifactId>
                <version>3.1.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.xml.stream</groupId>
                        <artifactId>stax-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-jcl</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-core</artifactId>
                <version>${springws.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-security</artifactId>
                <version>${springws.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.soap</groupId>
                <artifactId>javax.xml.soap-api</artifactId>
                <version>1.3.8</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.messaging.saaj</groupId>
                <artifactId>saaj-impl</artifactId>
                <version>1.3.28</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.10</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>2.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-rt</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.framework</artifactId>
                <version>6.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.ops4j.pax.exam</groupId>
                <artifactId>pax-exam-container-native</artifactId>
                <version>${exam.version}</version>
            </dependency>
            <dependency>
                <groupId>org.ops4j.pax.exam</groupId>
                <artifactId>pax-exam-junit4</artifactId>
                <version>${exam.version}</version>
            </dependency>
            <dependency>
                <groupId>org.ops4j.pax.exam</groupId>
                <artifactId>pax-exam-link-assembly</artifactId>
                <version>${exam.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
                <version>1.5.11</version>
            </dependency>
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm</artifactId>
                <version>8.0.1</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>javax.activation-api</artifactId>
                <version>1.2.0</version>
            </dependency>
            <dependency>
                <groupId>com.sun.activation</groupId>
                <artifactId>javax.activation</artifactId>
                <version>1.2.0</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>9.4.12.v20180830</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
                <version>9.4.12.v20180830</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <instructions>
                            <_removeheaders>
                                <!-- Remove these headers to make the output deterministic -->
                                Bnd-LastModified,Build-Jdk,Built-By,
                                <!-- There are not OSGi headers and shouldn't appear in the manifest -->
                                Private-Package,Include-Resource
                            </_removeheaders>
                            <_nodefaultversion>true</_nodefaultversion>
                            <_consumer-policy>${range;[--,++)}</_consumer-policy>
                            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                        </instructions>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.0</version>
                    <configuration>
                        <includes>
                            <include>**/*Test.java</include>
                        </includes>
                        <!-- Keep heap size small. We have some unit tests that deal with volumes
                             of data proportional to the heap size (to test that Axiom is streaming
                             the data instead of loading it into memory). Obviously, the execution time of
                             these tests also are proportional to the heap size. To accelerate the execution
                             of the tests, we should use a heap size as small as possible. -->
                        <argLine>${argLine} -Xms16m -Xmx48m</argLine>
                        <trimStackTrace>false</trimStackTrace>
                        <systemProperties>
                            <property>
                                <name>java.io.tmpdir</name>
                                <value>${project.build.directory}/tmp</value>
                            </property>
                            <property>
                                <name>user.home</name>
                                <value>${project.build.directory}</value>
                            </property>
                            <property>
                                <name>java.awt.headless</name>
                                <value>true</value>
                            </property>
                            <!-- Uncomment this to test with the StAX implementation in Java 7 -->
                            <!-- property>
                                <name>javax.xml.stream.XMLInputFactory</name>
                                <value>com.sun.xml.internal.stream.XMLInputFactoryImpl</value>
                            </property>
                            <property>
                                <name>javax.xml.stream.XMLOutputFactory</name>
                                <value>com.sun.xml.internal.stream.XMLOutputFactoryImpl</value>
                            </property -->
                            <!-- Uncomment this to test with BEA's reference implementation -->
                            <!-- property>
                                <name>javax.xml.stream.XMLInputFactory</name>
                                <value>com.bea.xml.stream.MXParserFactory</value>
                            </property>
                            <property>
                                <name>javax.xml.stream.XMLOutputFactory</name>
                                <value>com.bea.xml.stream.XMLOutputFactoryBase</value>
                            </property -->
                        </systemProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <trimStackTrace>false</trimStackTrace>
                        <systemProperties>
                            <property>
                                <name>java.io.tmpdir</name>
                                <value>${project.build.directory}/tmp</value>
                            </property>
                            <property>
                                <name>user.home</name>
                                <value>${project.build.directory}</value>
                            </property>
                            <property>
                                <name>java.awt.headless</name>
                                <value>true</value>
                            </property>
                        </systemProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                </plugin>
                <plugin>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${shade.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>com.agilejava.docbkx</groupId>
                    <artifactId>docbkx-maven-plugin</artifactId>
                    <version>2.0.14</version>
                    <dependencies>
                        <!-- Contains the catalog and DTD/Schema files. We use this to resolve the DTD locally
                             instead of downloading it from the Web -->
                        <dependency>
                            <groupId>net.sf.docbook</groupId>
                            <artifactId>docbook-xml</artifactId>
                            <version>5.0-all</version>
                            <classifier>resources</classifier>
                            <type>zip</type>
                        </dependency>
                        <!-- Upgrade to xml-resolver 1.2. This is merely to make debugging easier (version 1.1
                             neither has debug information nor a source JAR) -->
                        <dependency>
                            <groupId>xml-resolver</groupId>
                            <artifactId>xml-resolver</artifactId>
                            <version>1.2</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.7</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <tagBase>https://svn.apache.org/repos/asf/webservices/axiom/tags</tagBase>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <tagNameFormat>@{project.version}</tagNameFormat>
                        <!-- The default value "clean verify" is not appropriate. If the install
                             phase is not executed, then the current build will pick up artifacts
                             from a previous build. -->
                        <preparationGoals>clean install</preparationGoals>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.gmavenplus</groupId>
                    <artifactId>gmavenplus-plugin</artifactId>
                    <version>1.5</version>
                    <configuration>
                        <!-- We don't actually want to allow System.exit, but the security manager
                             installed by the plugin causes problems in multithreaded builds. -->
                        <allowSystemExits>true</allowSystemExits>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy-all</artifactId>
                            <version>2.4.10</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>0.11</version>
                </plugin>
                <plugin>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.0.0-M2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <detectOfflineLinks>false</detectOfflineLinks>
                        <source>1.7</source>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-invoker-plugin</artifactId>
                    <version>2.0.0</version>
                </plugin>
                <plugin>
                    <groupId>com.github.veithen.maven</groupId>
                    <artifactId>xjc-maven-plugin</artifactId>
                    <version>0.1</version>
                </plugin>
                <plugin>
                    <groupId>com.github.veithen.maven</groupId>
                    <artifactId>wsimport-maven-plugin</artifactId>
                    <version>0.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>1.11</version>
                    <configuration>
                        <complianceLevel>1.7</complianceLevel>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjrt</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjtools</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <!-- Dirty hack to work around Java 9 incompatibility in the plugin -->
                            <groupId>com.sun</groupId>
                            <artifactId>tools</artifactId>
                            <version>${java.version}</version>
                            <scope>system</scope>
                            <systemPath>${project.basedir}/pom.xml</systemPath>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.gmavenplus</groupId>
                                        <artifactId>gmavenplus-plugin</artifactId>
                                        <versionRange>[0.0.0,)</versionRange>
                                        <goals>
                                            <goal>execute</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.jacoco</groupId>
                                        <artifactId>jacoco-maven-plugin</artifactId>
                                        <versionRange>[0.0.0,)</versionRange>
                                        <goals>
                                            <goal>prepare-agent</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>tidy-maven-plugin</artifactId>
                                        <versionRange>[0.0.0,)</versionRange>
                                        <goals>
                                            <goal>check</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <!-- We use maven-remote-resources-plugin only to add resources for human consumption.
                                         Disable it to speed up the build in Eclipse. -->
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-remote-resources-plugin</artifactId>
                                        <versionRange>[0.0.0,)</versionRange>
                                        <goals>
                                            <goal>process</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.veithen.alta</groupId>
                    <artifactId>alta-maven-plugin</artifactId>
                    <version>0.6.1</version>
                </plugin>
                <plugin>
                    <groupId>com.github.veithen.phos</groupId>
                    <artifactId>enforcer-maven-plugin</artifactId>
                    <version>0.2.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <rules>
                        <requireJavaVersion>
                            <!-- We require Java 8 for the build, but we enforce Java 7 compatibility using Animal Sniffer -->
                            <version>1.8.0</version>
                        </requireJavaVersion>
                        <requireMavenVersion>
                            <!-- Require a recent Maven version for consistent build results -->
                            <version>3.3.1</version>
                        </requireMavenVersion>
                        <requireNoRepositories>
                            <message>The POM must not include repository definitions since non Apache repositories threaten the build stability.</message>
                            <banRepositories>true</banRepositories>
                            <!-- We need the Eclipse P2 repository for one of the Eclipse releases. If we select the
                                 repository carefully, then it is reasonable to assume that this doesn't threaten
                                 the build stability. -->
                            <allowedRepositories>
                                <allowedRepository>kepler</allowedRepository>
                                <allowedRepository>oxygen</allowedRepository>
                            </allowedRepositories>
                            <banPluginRepositories>true</banPluginRepositories>
                            <!-- We still need to allow the Apache snapshot repository -->
                            <allowSnapshotRepositories>true</allowSnapshotRepositories>
                            <allowSnapshotPluginRepositories>true</allowSnapshotPluginRepositories>
                        </requireNoRepositories>
                    </rules>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.gmavenplus</groupId>
                <artifactId>gmavenplus-plugin</artifactId>
                <executions>
                    <execution>
                        <id>initialize</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <scripts>
                                <script><![CDATA[
                                    import java.io.File
                                    
                                    // Since we don't generate Maven sites for submodules the project URLs computed by Maven
                                    // (parent project URL + artifact ID) are wrong. Make sure that the URL is explicitly set
                                    // to the right location, at least for modules that deploy artifacts.
                                    if (project.properties['skipDeploy'] == 'false' && !new File(project.basedir, 'src/site/site.xml').exists() && project.url != 'http://ws.apache.org/axiom/') {
                                        throw new Error('Invalid project URL')
                                    }
                                    
                                    // Create the temporary directory specified in the surefire configuration
                                    new File(project.build.directory, 'tmp').mkdirs()
                                    
                                    // Skip Jacoco if necessary
                                    if (System.properties['skipTests'] == 'true') {
                                        println 'Disabling JaCoCo because tests are skipped'
                                        project.properties['skipJacoco'] = 'true'
                                    }
                                ]]></script>
                            </scripts>
                        </configuration>
                    </execution>
                    <execution>
                        <id>check-tmp-dir</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <scripts>
                                <script>
                                    import java.io.File
                                    
                                    if (new File(project.build.directory, 'tmp').listFiles().length > 0) {
                                        throw new Error("Temporary directory not empty");
                                    }
                                </script>
                            </scripts>
                        </configuration>
                    </execution>
                    <execution>
                        <id>prepare-site</id>
                        <phase>pre-site</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <scripts>
                                <script>
                                    import java.util.Date
                                    import java.text.MessageFormat
                                    project.properties['release_date'] = MessageFormat.format("{0,date,MMMMM dd, yyyy}", new Date())
                                    project.properties['release_version'] = project.version.replaceAll("-SNAPSHOT", "")
                                    project.properties['skipSiteSite'] = String.valueOf(!new File(project.basedir, 'src/site/site.xml').exists())
                                </script>
                            </scripts>
                        </configuration>
                    </execution>
                    <execution>
                        <id>check-site</id>
                        <phase>post-site</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <scripts>
                                <script>
                                    project.properties['skipSiteStage'] = String.valueOf(!new File(project.reporting.outputDirectory).exists())
                                </script>
                            </scripts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <configuration>
                    <properties>
                        <projectName>Apache Axiom</projectName>
                    </properties>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.veithen.maven</groupId>
                <artifactId>hermetic-maven-plugin</artifactId>
                <version>0.4.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate-policy</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-maven-plugin</artifactId>
                <version>1.17</version>
                <executions>
                    <execution>
                        <id>check</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <signature>
                        <groupId>org.codehaus.mojo.signature</groupId>
                        <artifactId>java17</artifactId>
                        <version>1.0</version>
                    </signature>
                </configuration>
            </plugin>
            <plugin>
                <!-- This serves two purposes:
                      (1) we want to generate source JARs for all builds, not just release builds;
                      (2) we need (some of) the source JARs to generate the Javadoc in the apidocs module. -->
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>source-jars</id>
                        <!-- Execute in phase prepare-package to make sure that the source JAR is built before
                             maven-shade-plugin is invoked. (Note that activation of the apache-release profile
                             may cause an inversion of the order in which these goals are executed if they are
                             bound to the same phase.) -->
                        <phase>prepare-package</phase>
                        <goals>
                            <!-- Use "jar-no-fork" instead of "jar" to avoid forking the build
                                 (which is not a problem, but unnecessary) -->
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <attach>true</attach>
                </configuration>
            </plugin>
            <plugin>
                <!-- We need this to make sure that shade:shade is executed after source:jar-no-fork
                     (see MSHADE-120). -->
                <artifactId>maven-shade-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <skip>${skipJacoco}</skip>
                            <includes>
                                <include>org.apache.axiom.*</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.github.veithen.maven</groupId>
                <artifactId>jacoco-report-maven-plugin</artifactId>
                <version>0.1.3-SNAPSHOT</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>${skipDeploy}</skip>
                    <!-- Work around flakiness in the ASF infrastructure -->
                    <retryFailedDeploymentCount>3</retryFailedDeploymentCount>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-site-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-site</id>
                        <phase>site</phase>
                        <goals>
                            <goal>site</goal>
                        </goals>
                        <configuration>
                            <skip>${skipSiteSite}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>site-stage</id>
                        <phase>site-deploy</phase>
                        <goals>
                            <goal>stage</goal>
                        </goals>
                        <configuration>
                            <skip>${skipSiteStage}</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tidy-maven-plugin</artifactId>
                <version>1.0-beta-1</version>
                <executions>
                    <execution>
                        <!-- The default binding to the verify phase doesn't work here because some
                             modules transform their POMs. -->
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-publish-plugin</artifactId>
                <inherited>false</inherited>
                <configuration>
                    <ignorePathsToDelete>
                        <ignorePathToDelete>.htaccess</ignorePathToDelete>
                        <!-- Allow people to enable Google Webmaster Tools -->
                        <ignorePathToDelete>google*.html</ignorePathToDelete>
                    </ignorePathsToDelete>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.veithen.maven</groupId>
                <artifactId>eclipse-settings-maven-plugin</artifactId>
                <version>0.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>apply</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <bundles>
                        <bundle>
                            <symbolicName>org.eclipse.jdt.core</symbolicName>
                            <properties>
                                <property>
                                    <name>org.eclipse.jdt.core.formatter.comment.line_length</name>
                                    <value>100</value>
                                </property>
                                <property>
                                    <name>org.eclipse.jdt.core.formatter.lineSplit</name>
                                    <value>100</value>
                                </property>
                                <property>
                                    <name>org.eclipse.jdt.core.formatter.tabulation.char</name>
                                    <value>space</value>
                                </property>
                                <property>
                                    <name>org.eclipse.jdt.core.formatter.indentation.size</name>
                                    <value>4</value>
                                </property>
                            </properties>
                        </bundle>
                        <bundle>
                            <symbolicName>org.eclipse.jdt.ui</symbolicName>
                            <properties>
                                <property>
                                    <name>org.eclipse.jdt.ui.text.custom_code_templates</name>
                                    <value><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="false" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">/*
 * 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.
 */
$${filecomment}
$${package_declaration}

$${typecomment}
$${type_declaration}</template></templates>]]></value>
                                </property>
                            </properties>
                        </bundle>
                    </bundles>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <inherited>false</inherited>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>issue-tracking</report>
                            <report>project-team</report>
                            <report>scm</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <!-- Skip the execution configured in org.apache:apache. We use our own configuration. -->
                                <id>attach-sources</id>
                                <phase>none</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <additionalOptions>
                                        <additionalOption>-Xdoclint:none</additionalOption>
                                    </additionalOptions>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <!-- The source release is built by the distribution module -->
                                <id>source-release-assembly</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <excludes>
                                <!-- Exclusions specific to the root project -->
                                
                                <!-- RAT doesn't recognize this one as notes file -->
                                <exclude>RELEASE-NOTE.txt</exclude>
                                <exclude>src/site/markdown/release-notes/**</exclude>
                                <!-- SVG files are not edited by hand, so license headers would be lost anyway -->
                                <exclude>**/*.svg</exclude>
                                <!-- License file from Jaxen (see LEGAL-74 & WSCOMMONS-545) -->
                                <exclude>legal/jaxen-LICENSE.txt</exclude>
                                <!-- BSD style license -->
                                <exclude>legal/stax2-api-LICENSE.txt</exclude>
                                <!-- Files used by various developer tools -->
                                <exclude>*.sonarj</exclude>
                                <!-- File generated by maven-release-plugin -->
                                <exclude>release.properties</exclude>
                                <!-- Patch files -->
                                <exclude>third_party/*.patch</exclude>
                                <!-- Bazel directories -->
                                <exclude>bazel-*/**</exclude>
                                
                                <!-- Exclusions that apply to submodules -->
                                
                                <!-- We can't add license headers to test resources -->
                                <exclude>src/test/resources/**</exclude>
                                <!-- Temporary file created by maven-shade-plugin -->
                                <exclude>dependency-reduced-pom.xml</exclude>
                                <exclude>.repository/**</exclude>
                            </excludes>
                        </configuration> 
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
