<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-parent</artifactId>
    <packaging>pom</packaging>
    <version>4.0.2-SNAPSHOT</version>
    <name>Apache POI - the Java API for Microsoft Documents</name>
    <description>Maven build of Apache POI for Sonar checks</description>
    <url>http://poi.apache.org/</url>

    <mailingLists>
        <mailingList>
            <name>POI Users List</name>
            <subscribe>user-subscribe@poi.apache.org</subscribe>
            <unsubscribe>user-unsubscribe@poi.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/poi-user/</archive>
        </mailingList>
        <mailingList>
            <name>POI Developer List</name>
            <subscribe>dev-subscribe@poi.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@poi.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/poi-dev/</archive>
        </mailingList>
    </mailingLists>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>

    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>

    <issueManagement>
        <system>Bugzilla</system>
        <url>https://bz.apache.org/bugzilla/</url>
    </issueManagement>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/poi/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/poi/trunk</developerConnection>
        <url>http://svn.apache.org/viewvc/poi</url>
    </scm>

    <repositories>
        <repository>
            <id>apache-releases-repo</id>
            <name>apache releases repo</name>
            <url>https://repository.apache.org/content/repositories/releases</url>
        </repository>
    </repositories>

    <modules>
        <module>main</module>
        <module>ooxml-schema</module>
        <module>ooxml-schema-encryption</module>
        <module>ooxml-schema-security</module>
        <module>ooxml</module>
        <module>scratchpad</module>
        <module>excelant</module>
        <module>examples</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Try to disable running SVN blame as it causes errors here because the source is copied from the actual SVN location here! -->
        <sonar.scm.disabled>true</sonar.scm.disabled>

        <!-- define some of the third-party or plugin-versions globally to use the same in all modules -->
        <xmlbeans.version>3.0.2</xmlbeans.version>
        <junit.version>4.12</junit.version>
        <xmlunit.version>2.5.1</xmlunit.version>
        <mockito.version>2.13.0</mockito.version>
        <maven.plugin.resources.version>3.0.1</maven.plugin.resources.version>
        <maven.plugin.jar.version>3.0.1</maven.plugin.jar.version>
        <maven.plugin.clean.version>3.0.0</maven.plugin.clean.version>
        <maven.plugin.download.version>1.1.0</maven.plugin.download.version>
        <maven.plugin.antrun.version>1.8</maven.plugin.antrun.version>
        <maven.plugin.surefire.version>2.19.1</maven.plugin.surefire.version>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven.plugin.surefire.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>${maven.plugin.surefire.version}</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <systemPropertyVariables>
                        <POI.testdata.path>../../test-data</POI.testdata.path>
                        <java.awt.headless>true</java.awt.headless>
                        <org.apache.poi.util.POILogger>org.apache.poi.util.NullLogger</org.apache.poi.util.POILogger>
                    </systemPropertyVariables>
                    <!-- use to following to analyze OOM issues:	-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -->
                    <argLine>@{argLine} -Duser.language=en -Duser.country=US -Xmx1024m -Djava.io.tmpdir=${basedir}/target/tmp
                    </argLine>
                    <excludes>
                        <exclude>**/All*Tests.java</exclude>
                        <exclude>**/TestUnfixedBugs.java</exclude>
                        <exclude>**/TestcaseRecordInputStream.java</exclude>
                        <exclude>**/POITestCase.java</exclude>
                        <!-- TODO: error about no public construct, seems to run with JUnit 3.8... -->
                        <exclude>**/TestWordToConverterSuite*.java</exclude>
                        <exclude>**/TestExcelConverterSuite*.java</exclude>
                    </excludes>
                    <!--test>TestPPTX2PNG</test-->
                    <!--parallel>both</parallel>
                <threadCount>10</threadCount-->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.2</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.xmlunit</groupId>
            <artifactId>xmlunit-core</artifactId>
            <version>${xmlunit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <!-- We need a fair amount of memory to compile the xml schema, -->
        <!-- but limit it in case it goes wrong!                        -->
        <!-- Pick the right amount based on 32 vs 64 bit jvm            -->
        <!-- ********************************************************** -->
        <!-- If you are using IntelliJ, you might want to check         -->
        <!-- http://stackoverflow.com/questions/24115142                -->
        <!-- ********************************************************** -->
        <profile>
            <id>32bitstuff</id>
            <activation>
                <property>
                    <name>sun.arch.data.model</name>
                    <value>32</value>
                </property>
            </activation>
            <properties>
                <maven.compiler.maxmem>512m</maven.compiler.maxmem>
                <argLine>-Xmx768m</argLine>
            </properties>
        </profile>

        <profile>
            <id>64bitstuff</id>
            <activation>
                <property>
                    <name>sun.arch.data.model</name>
                    <value>64</value>
                </property>
            </activation>
            <properties>
                <maven.compiler.maxmem>768m</maven.compiler.maxmem>
                <argLine>-Xmx1024m</argLine>
            </properties>
        </profile>

        <profile>
            <id>xmlbean</id>
            <activation>
                <file>
                    <exists>xmlbeans.marker</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>xmlbeans-maven-plugin</artifactId>
                        <version>2.3.3</version>
                        <executions>
                            <execution>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>xmlbeans</goal>
                                </goals>
                                <configuration>
                                    <schemaDirectory>${basedir}/target/schemas</schemaDirectory>
                                    <javaSource>1.5</javaSource>
                                    <noJavac>true</noJavac>
                                    <noUpa>${xmlbeans.noUpa}</noUpa>
                                    <noPvr>${xmlbeans.noPvr}</noPvr>
                                    <xmlConfigs>
                                        <xmlConfig implementation="java.io.File">
                                            ${basedir}/../../src/ooxml/resources/org/apache/poi/poifs/crypt/encryptionCertificate.xsdconfig
                                        </xmlConfig>
                                        <xmlConfig implementation="java.io.File">
                                            ${basedir}/../../src/ooxml/resources/org/apache/poi/poifs/crypt/encryptionInfo.xsdconfig
                                        </xmlConfig>
                                        <xmlConfig implementation="java.io.File">
                                            ${basedir}/../../src/ooxml/resources/org/apache/poi/poifs/crypt/encryptionPassword.xsdconfig
                                        </xmlConfig>
                                        <xmlConfig implementation="java.io.File">
                                            ${basedir}/../../src/ooxml/resources/org/apache/poi/schemas/ooxmlSchemas.xsdconfig
                                        </xmlConfig>
                                    </xmlConfigs>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>${maven.plugin.antrun.version}</version>
                        <executions>
                            <execution>
                                <id>copy-xmltype-and-xsdconfig</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <copy todir="${basedir}/target/schemas">
                                            <fileset dir="${basedir}/../../src/ooxml/resources/org/apache/poi/schemas"/>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>replace-xmltypeloader</id>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <property name="xmlbean.sources.dir"
                                                  location="${basedir}/target/generated-sources/xmlbeans"/>

                                        <property name="loaderMethod"><![CDATA[
        private static java.lang.ref.SoftReference<org.apache.xmlbeans.SchemaTypeLoader> typeLoader;

        private static synchronized org.apache.xmlbeans.SchemaTypeLoader getTypeLoader() {
            org.apache.xmlbeans.SchemaTypeLoader stl = (typeLoader == null) ? null : typeLoader.get();
            if (stl == null) {
                stl = org.apache.xmlbeans.XmlBeans.typeLoaderForClassLoader(\2.class.getClassLoader());
                typeLoader = new java.lang.ref.SoftReference(stl);
            }
            return stl;
        }

        public static \2 newInstance\(\) \{]]></property>

                                        <replaceregexp byline="true"
                                                       match="(\s*)public static ([^ ]+) newInstance\(\) \{"
                                                       replace="${loaderMethod}">
                                            <fileset dir="${xmlbean.sources.dir}" includes="**/*.java"
                                                     excludes="**/impl/**"/>
                                        </replaceregexp>

                                        <replace dir="${xmlbean.sources.dir}" includes="**/*.java"
                                                 excludes="**/impl/**">
                                            <replacetoken>org.apache.xmlbeans.XmlBeans.getContextTypeLoader
                                            </replacetoken>
                                            <replacevalue>getTypeLoader</replacevalue>
                                        </replace>

                                        <!-- remove deprecated warnings, as we prefer the array methods - see #56854 -->
                                        <replace dir="${xmlbean.sources.dir}" includes="**/*.java"
                                                 excludes="**/impl/**">
                                            <replacetoken><![CDATA[     * @deprecated
]]></replacetoken>
                                        </replace>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>remove-xmltypeloader-from-schema-jar</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <touch file="${basedir}/target/generated-sources/xmlbeans/.staleFlag"/>
                                        <delete dir="${basedir}/target/classes/org/apache"/>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

            <dependencies>
                <dependency>
                    <groupId>org.apache.xmlbeans</groupId>
                    <artifactId>xmlbeans</artifactId>
                    <version>${xmlbeans.version}</version>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
</project>
