<?xml version="1.0"?>

<!--
  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.odftoolkit</groupId>
    <artifactId>schema2template-pom</artifactId>
    <version>0.9.0-incubating-SNAPSHOT</version>
  </parent>
  
	<!-- The Basics -->
	<artifactId>schema2template</artifactId>
	<version>0.9.0-incubating-SNAPSHOT</version>
	<packaging>jar</packaging>
	<dependencies>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
		</dependency>
		<dependency>
			<groupId>net.java.dev.msv</groupId>
			<artifactId>msv-core</artifactId>
            <version>2013.6.1</version>
		</dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss</maven.build.timestamp.format>
    </properties>
	
	<!-- Build Settings -->
	<build>
		<extensions>
			<extension>
				<groupId>org.apache.maven.wagon</groupId>
				<artifactId>wagon-webdav-jackrabbit</artifactId>
				<version>1.0</version>
			</extension>
		</extensions>
		<plugins>
			<plugin>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.0.2</version>
				<configuration>
					<archive>
						<index>true</index>
						<manifest>
							<mainClass>schema2template.example.odf.OdfHelper</mainClass>
						</manifest>
						<manifestEntries>
							<version>${project.version}</version>
						</manifestEntries>
						<manifestSections>
							<manifestSection>
								<name>schema2template</name>
								<manifestEntries>
									<Application-Name>schema2template</Application-Name>
									<Application-Version>${project.version}</Application-Version>
									<Application-Website>http://incubator.apache.org/odftoolkit/</Application-Website>
									<Built-By>${user.name}</Built-By>
									<Built-Date>${build.timestamp}</Built-Date>
								</manifestEntries>
							</manifestSection>
						</manifestSections>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<!-- Explizit version required for fix on systemPropertyVariables -->
				<version>2.19.1</version>
				<configuration>
					<systemPropertyVariables>
						<odfdom.version>${project.version}</odfdom.version>
						<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
					</systemPropertyVariables>
					<excludes>
						<exclude>**/integrationtest/**</exclude>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.1</version>
				<configuration>
                    <!-- defined in the parent pom.xml -->
					<source>${jdk.version}</source>
					<target>${jdk.version}</target>
					<showDeprecation>true</showDeprecation>
				</configuration>
			</plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                    	<exclude>src/test/resources/examples/odf/*.ref</exclude>
						<exclude>src/main/resources/examples/odf/odfdom-python/OdfTextDocument.odt</exclude>
						<exclude>src/main/resources/examples/odf/odf-schemas/*.rng</exclude>
                    </excludes>
                </configuration>
            </plugin><!--
            <plugin>
      			<groupId>org.codehaus.mojo</groupId>
      			<artifactId>wagon-maven-plugin</artifactId>
      			<version>1.0-beta-3</version>
      			<executions>
        			<execution>
          				<id>download-odf-schema-v1.2</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
            				<fromFile>os/OpenDocument-v1.2-os-schema.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
        			<execution>
          				<id>download-odf-manifest-schema-v1.2</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
            				<fromFile>os/OpenDocument-v1.2-os-manifest-schema.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
        			<execution>
          				<id>download-odf-dsig-schema-v1.2</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
            				<fromFile>os/OpenDocument-v1.2-os-dsig-schema.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
        			<execution>
          				<id>download-odf-schema-v1.1</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://docs.oasis-open.org/office/v1.1</url>
            				<fromFile>OS/OpenDocument-schema-v1.1.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
        			<execution>
          				<id>download-odf-strict-schema-v1.1</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://docs.oasis-open.org/office/v1.1</url>
            				<fromFile>OS/OpenDocument-strict-schema-v1.1.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
                    <!- Disabled due to a security exception on Apache servers, when downloading from that OASIS host
                    Error handling resource: sun.security.validator.ValidatorException: 
                        PKIX path building failed: 
                            sun.security.provider.certpath.SunCertPathBuilderException: 
                                unable to find valid certification path to requested target
        			<execution>
          				<id>download-odf-schema-v1.0</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://www.oasis-open.org/committees/download.php/12571</url>
            				<fromFile>OpenDocument-schema-v1.0-os.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
        			<execution>
          				<id>download-odf-strict-schema-v1.0</id>
          				<phase>process-resources</phase>
          				<goals>
            				<goal>download-single</goal>
          				</goals>
          				<configuration>
            				<url>dav:http://www.oasis-open.org/committees/download.php/12569</url>
            				<fromFile>OpenDocument-strict-schema-v1.0-os.rng</fromFile>
            				<toDir>${project.build.directory}/odf-schemas</toDir>
          				</configuration>
        			</execution>
      			</executions>
    		</plugin>-->
		</plugins>
	</build>
	<!-- <distributionManagement>
		<site>
			<id>odfdom</id>
			<name>ODFDOM Java Toolkit Project</name>
			<url>dav:https://odftoolkit.org/website/odfdom/${project.version}/codegeneration/schema2template</url>
		</site>
	</distributionManagement> -->
	<reporting>
		<plugins>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.10.4</version>
				<configuration>
					<doctitle>Schema2template</doctitle>
					<links>
						<link>http://docs.oracle.com/javase/8/docs/api/</link>
					</links>
					<splitindex>true</splitindex>
					<windowtitle>Schema2template v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
                    <additionalparam>${javadoc.opts}</additionalparam>                        
				</configuration>
			</plugin>

			<!-- Code Coverage Testing generated by Cobertura -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>cobertura-maven-plugin</artifactId>
				<version>2.7</version>
				<configuration>
					<instrumentation>
						<excludes>
							<exclude>org/odftoolkit/**/*Test.class</exclude>
						</excludes>
					</instrumentation>
				</configuration>
			</plugin>
		</plugins>
	</reporting>
    <profiles>
        <profile>
            <id>doclint-java8-disable</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <javadoc.opts>-Xdoclint:none</javadoc.opts>
            </properties>
        </profile>
	</profiles>
	<!-- More Project Information -->
	<name>XML Schema to Template Mapping Tool: Library</name>
	<description>XML Schema to Template Mapping Tool: Library</description>
	<organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
</project>
