<?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>
    <packaging>pom</packaging>
    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>10</version>
    </parent>

    <groupId>org.apache.odftoolkit</groupId>
    <artifactId>odftoolkit</artifactId>
    <version>0.6-incubating</version>

    <name>Apache ODF Toolkit</name>
    <description>
        The Apache ODF Toolkit is a set of Java modules that allow 
        programmatic creation, scanning and manipulation of Open Document Format 
        (ISO/IEC 26300 == ODF) documents. Unlike other approaches which rely on 
        runtime manipulation of heavy-weight editors via an automation 
        interface, the ODF Toolkit is lightweight and ideal for server use. 
    </description>
    <url>http://incubator.apache.org/odftoolkit/</url>
    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/trunk</developerConnection>
        <url>http://svn.apache.org/viewvc/incubator/odf/trunk</url>
    </scm>

    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/ODFTOOLKIT</url>
    </issueManagement>

    <ciManagement>
        <system>jenkins</system>
        <url>https://builds.apache.org</url>
    </ciManagement>

    <distributionManagement>
        <!-- not used for deployment but only for site:stage goal -->
        <site>
            <id>incubator.apache.org/odftoolkit/</id>
            <url>http://incubator.apache.org/odftoolkit/reports/${project.version}/</url>
        </site>
    </distributionManagement>

    <developers>
        <developer>
            <id>svanteschubert</id>
            <name>Svante</name>
            <email>svanteschubert AT apache.org</email>
            <organization>Individual</organization>
            <roles>
                <role>ODFDOM working group chair</role>
                <role>architect</role>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>devinhan</id>
            <name>Han Biao</name>
            <email>devinhan AT apache.org</email>
            <organization>IBM</organization>
            <organizationUrl>http://www.ibm.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+8</timezone>
        </developer>
        <developer>
            <id>daisyguo</id>
            <name>Ying Chun Guo</name>
            <email>daisyguo AT apache.org</email>
            <organization>IBM</organization>
            <organizationUrl>http://www.ibm.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+8</timezone>
        </developer>
        <developer>
            <id>weihuaWang</id>
            <name>Wei Hua Wang</name>
            <organization>IBM</organization>
            <organizationUrl>http://www.ibm.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+8</timezone>
        </developer>
        <developer>
            <id>FrankMeies</id>
            <name>Frank</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>lars_behrmann</id>
            <name>Lars</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>steffeng</id>
            <name>Steffen</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>hans-peter</id>
            <name>Hans-Peter</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>bei</id>
            <name>Bernd</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>mst</id>
            <name>Michael</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>clippka</id>
            <name>Christian</name>
            <organization>Oracle Inc.</organization>
            <organizationUrl>http://www.oracle.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>fhopf</id>
            <name>Florian Hopf</name>
            <email>fhopf AT apache.org</email>
            <url>http://blog.florian-hopf.de</url>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>User List</name>
            <post>odf-users@incubator.apache.org</post>
            <subscribe>odf-users-subscribe@incubator.apache.org</subscribe>
            <unsubscribe>odf-users-unsubscribe@incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-users/</archive>
        </mailingList>
        <mailingList>
            <name>Developer List</name>
            <post>odf-dev@incubator.apache.org</post>
            <subscribe>odf-dev-subscribe@incubator.apache.org</subscribe>
            <unsubscribe>odf-dev-unsubscribe@incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/</archive>
        </mailingList>
        <mailingList>
            <name>Commits</name>
            <subscribe>odf-commits-subscribe@incubator.apache.org</subscribe>
            <unsubscribe>odf-commmits-unsubscribe@incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-commits/</archive>
        </mailingList>
    </mailingLists>
    
    <modules>
        <module>taglets</module>
        <module>generator</module>
        <module>xslt-runner</module>
        <module>xslt-runner-task</module>
        <module>odfdom</module>
        <module>validator</module>
        <module>simple</module>
    </modules>
     
    <profiles>
        <profile>
            <id>pedantic</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>CHANGES.txt</exclude>
								<exclude>.gitignore</exclude>
                            </excludes>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>apache-release</id>
            <properties>
                <username>${user.name}</username>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>src</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assemble/src.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                            <execution>
                                <id>doc</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assemble/doc.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>            
                            <execution>
                                <id>bin</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assemble/bin.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>                            
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>package</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>prepare-package</phase>
                                <configuration>
                                    <tasks>
                                        <mkdir dir="${basedir}/target/${project.version}-bin" />
                                        <copy todir="${basedir}/target/${project.version}-bin" flatten="true">
                                              <fileset dir="${basedir}">
                                                <include name="*.txt" />
                                                <include name="KEYS" />      
                                                <include name="odfdom/target/*.jar" />
                                                <include name="simple/target/*.jar" />
                                                <include name="validator/target/*.?ar" />
                                                <include name="xslt-runner/target/*.jar" />
                                                <include name="xslt-runner-task/target/*.jar" />
                                                <exclude name="**/target/**-javadoc.jar" />
                                                <exclude name="**/target/**-sources.jar" />
                                                <exclude name="**/target/**-jar-with-dependencies.jar" />
                                              </fileset>
                                        </copy>
                                        <mkdir dir="${basedir}/target/${project.version}-docs" />
                                        <copy todir="${basedir}/target/${project.version}-docs" flatten="true">  
                                            <fileset dir="${basedir}">   
                                                <include name="*.txt" />
                                                <include name="KEYS" />                                   
                                                <include name="**/target/*-javadoc.jar" />
                                            </fileset>
                                        </copy>
                                        </tasks>                                 
                                </configuration>
                            </execution>
                            <execution>
                                <id>checksum</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <tasks>                                       
                                        <checksum algorithm="MD5" fileext=".md5">
                                              <fileset dir="${basedir}/target">
                                                <include name="*.zip" />
                                                <include name="*.tar.gz" />
                                                <include name="*.tar.bz2" />
                                              </fileset>
                                        </checksum>
                                        <checksum algorithm="SHA1" fileext=".sha">
                                              <fileset dir="${basedir}/target">
                                                <include name="*.zip" />
                                                <include name="*.tar.gz" />
                                                <include name="*.tar.bz2" />
                                              </fileset>
                                        </checksum>
                                        <checksum file="target/odftoolkit-${project.version}-src.zip" algorithm="SHA1" property="checksum" />                                
                                        <copy todir="${basedir}/target/release/${project.version}/">  
                                            <fileset dir="${basedir}/target">   
                                                <include name="*-src.*" />
                                            </fileset>
                                        </copy>
                                        <copy todir="${basedir}/target/release/${project.version}/binaries">  
                                            <fileset dir="${basedir}/target">   
                                                <include name="*-bin.*" />
                                            </fileset>
                                        </copy>
                                        <copy todir="${basedir}/target/release/${project.version}/docs">  
                                            <fileset dir="${basedir}/target">   
                                                <include name="*-doc.*" />
                                            </fileset>
                                        </copy>
                                        <echo file="${basedir}/target/vote.txt">
                                            From: ${username}@apache.org
                                            To: odf-dev@incubator.apache.org
                                            Subject: [VOTE] Release Apache ODF Toolkit ${project.version}

                                            A candidate for the ODF Toolkit ${project.version} release is available    at:

                                            http://people.apache.org/~${username}/odftoolkit-release/odftoolkit-${project.version}/
                                            
                                            The release candidate is a zip archive of the sources in:

                                            https://svn.apache.org/repos/asf/incubator/odf/tags/${project.version}/

                                            The SHA1 checksum of the archive is ${checksum}.

                                            Please vote on releasing this package as Apache ODF Toolkit ${project.version}.
                                            The vote is open for the next 72 hours and passes if a majority
                                            of at least three +1 ODF Toolkit PMC votes are cast.

                                            [ ] +1 Release this package as Apache ODF Toolkit ${project.version}
                                            [ ] -1 Do not release this package because...${line.separator}
                                        </echo>
                                        <echo />
                                        <echo>
                                            The release candidate has been prepared in:    ${basedir}/target/${project.version}

                                            Please deploy it to people.apache.org like this:

                                            scp -r ${basedir}/target/${project.version} people.apache.org:public_html/odftoolkit/

											A release vote template has been generated for you:    file://${basedir}/target/vote.txt
										</echo>
										<echo />
									</tasks>                                 
								</configuration>
							</execution>
						</executions>
						<dependencies>
							<dependency>
								<groupId>org.apache.ant</groupId>
								<artifactId>ant-nodeps</artifactId>
								<version>1.8.1</version>
							</dependency>
						</dependencies>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>

