<?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.8.10-incubating</version>
  </parent>
  
	<!-- The Basics -->
	<artifactId>schema2template</artifactId>
	<version>0.8.10-incubating</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>2009.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>
	
	<!-- Build Settings -->
	<build>
		<extensions>
			<extension>
				<groupId>org.apache.maven.wagon</groupId>
				<artifactId>wagon-webdav-jackrabbit</artifactId>
				<version>1.0-beta-7</version>
			</extension>
		</extensions>
		<plugins>
			<plugin>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.3.1</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.6</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>2.0.2</version>
				<configuration>
					<source>1.5</source>
					<target>1.5</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>
                    </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>
        			<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.7</version>
				<configuration>
					<doctitle>Schema2template</doctitle>
					<minmemory>512m</minmemory>
					<maxmemory>1024m</maxmemory>
					<links>
						<link>http://download.oracle.com/javase/6/docs/api/</link>
					</links>
					<splitindex>true</splitindex>
					<windowtitle>Schema2template v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
				</configuration>
			</plugin>

			<!-- Code Coverage Testing generated by Cobertura -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>cobertura-maven-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<instrumentation>
						<excludes>
							<exclude>org/odftoolkit/**/*Test.class</exclude>
						</excludes>
					</instrumentation>
				</configuration>
			</plugin>
		</plugins>
	</reporting>

	<!-- 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>
