<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.marmotta</groupId>
        <artifactId>marmotta-parent</artifactId>
        <version>3.4.0-SNAPSHOT</version>
        <relativePath>parent</relativePath>
    </parent>

    <artifactId>marmotta-reactor</artifactId>
    <packaging>pom</packaging>

    <name>Apache Marmotta</name>
    <description>Open implementation of the Linked Data Platform</description>
    <url>http://marmotta.apache.org</url>

    <prerequisites>
        <maven>3.0.3</maven>
    </prerequisites>

    <inceptionYear>2012</inceptionYear>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>dglachs</id>
            <name>Dietmar Glachs</name>
            <email>dglachs@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>fchrist</id>
            <name>Fabian Christ</name>
            <email>fchrist@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>jakob</id>
            <name>Jakob Frank</name>
            <email>jakob@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>nandana</id>
            <name>Nandana Mihindukulasooriya</name>
            <email>nandana@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>rwesten</id>
            <name>Rupert Westenthaler</name>
            <email>rwesten@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>sschaffert</id>
            <name>Sebastian Schaffert</name>
            <email>sschaffert@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>wikier</id>
            <name>Sergio Fernández</name>
            <email>wikier@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>tkurz</id>
            <name>Thomas Kurz </name>
            <email>tkurz@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>rpalmieri</id>
            <name>Raffaele Palmieri</name>
            <email>rpalmieri@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <developer>
            <id>ansell</id>
            <name>Peter Ansell</name>
            <email>ansell@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Oliver Janner</name>
            <organization>Salzburg Research</organization>
        </contributor>
        <contributor>
            <name>Viktor Gal</name>
            <url>http://github.com/vigsterkr</url>
            <organization>Gravity R&amp;D</organization>
        </contributor>
        <contributor>
            <name>Chris Beer</name>
            <url>http://cbeer.info/</url>
        </contributor>
        <contributor>
            <name>Mark A. Matienzo</name>
            <url>http://matienzo.org/</url>
            <organization>Digital Public Library of America</organization>
            <organizationUrl>http://dp.la/</organizationUrl>
        </contributor>
        <contributor>
            <name>Kai Schlegel</name>
            <organization>University of Passau</organization>
            <organizationUrl>http://www.uni-passau.de/</organizationUrl>
        </contributor>
    </contributors>

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

    <scm>
        <url>https://git-wip-us.apache.org/repos/asf/marmotta.git</url>
        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/marmotta.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/marmotta.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <system>Jira</system>
        <url>http://issues.apache.org/jira/browse/MARMOTTA</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>users</name>
            <post>users@marmotta.apache.org</post>
            <subscribe>users-subscribe@marmotta.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@marmotta.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/marmotta-users/</archive>
            <otherArchives>
                <otherArchive>http://markmail.org/search/?q=list%3Aorg.apache.marmotta.users</otherArchive>
            </otherArchives>
        </mailingList>
        <mailingList>
            <name>dev</name>
            <post>dev@marmotta.apache.org</post>
            <subscribe>dev-subscribe@marmotta.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@marmotta.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/marmotta-dev/</archive>
            <otherArchives>
                <otherArchive>http://markmail.org/search/?q=list%3Aorg.apache.marmotta.dev</otherArchive>
            </otherArchives>
        </mailingList>
        <mailingList>
            <name>commits</name>
            <post>commits@marmotta.apache.org</post>
            <subscribe>commits-subscribe@marmotta.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@marmotta.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/marmotta-commits/</archive>
            <otherArchives>
                <otherArchive>http://markmail.org/search/?q=list%3Aorg.apache.marmotta.commits</otherArchive>
            </otherArchives>
        </mailingList>
    </mailingLists>

    <!-- release management -->
    <build>
        <plugins>
            <!-- do not install / deploy reactor -->
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <useReleaseProfile>false</useReleaseProfile>
                    <goals>deploy</goals>

                    <!-- don't ask for every submodule -->
                    <autoVersionSubmodules>true</autoVersionSubmodules>

                    <!-- do not fetch over the Internet the whole repository -->
                    <localCheckout>true</localCheckout>

                    <!-- the name of the tag of a release in GIT -->
                    <tagNameFormat>@{version}</tagNameFormat>

                    <!-- the profiles to run for the release -->
                    <arguments>-Pinstaller,marmotta-release,sign,kiwi ${arguments}</arguments>

                    <!-- make sure all dependencies are available -->
                    <preparationGoals>clean install</preparationGoals>

		    <pushChanges>false</pushChanges>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <!-- mysql README -->
                        <exclude>README.mysql</exclude>

                        <!-- Modules are checked individually -->
                        <exclude>parent/**</exclude>
                        <exclude>build/**</exclude>
                        <exclude>client/**</exclude>
                        <exclude>commons/**</exclude>
                        <exclude>extras/**</exclude>
                        <exclude>launchers/**</exclude>
                        <exclude>libraries/**</exclude>
                        <exclude>loader/**</exclude>
                        <exclude>platform/**</exclude>

                        <!-- Some extra files not covered by the default excludes -->
                        <exclude>.git/**</exclude>
                        <exclude>.gitignore</exclude>
                        <exclude>.idea/**</exclude>
                        <exclude>atlassian-ide-plugin.xml</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- modified Apache Release profile (copied and modified from Apache Jackrabbit) -->
        <profile>
            <id>marmotta-release</id>
            <properties>
                <username>${user.name}</username>
                <keyfile>${user.home}/.ssh/id_rsa</keyfile>
                <passphrase />
            </properties>
            <build>
                <plugins>
                    <!-- ensure that all license headers are present -->
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- sign artifacts on release -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <excludes>
                                        <exclude>**/*.asc</exclude>
                                        <exclude>**/*.md5</exclude>
                                        <exclude>**/*.sha1</exclude>
                                    </excludes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- attach sources and javadocs to deploy on release -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- assemble the project source artifacts -->
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly.xml</descriptor>
                                    </descriptors>
                                    <finalName>apache-marmotta-${project.version}</finalName>
                                    <tarLongFileMode>gnu</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- JCR-2455: Automatic staging of non-Maven release artifacts -->
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-cli</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>deploy</phase>
                                <configuration>
                                    <tasks>
                                        <mkdir dir="${basedir}/target/${project.version}" />
                                        <copy todir="${basedir}/target/${project.version}" flatten="true">
                                            <fileset dir="${basedir}">
                                                <include name="KEYS" />
                                                <include name="target/*-src.zip*" />
                                                <include name="launchers/marmotta-webapp/target/*-webapp.zip*" />
                                                <include name="launchers/marmotta-installer/target/*-installer.zip*" />
                                                <include name="libraries/ldpath/ldpath-ldquery-cli/target/*-ldquery.zip*" />

                                                <include name="target/*-src.tar.gz*" />
                                                <include name="launchers/marmotta-webapp/target/*-webapp.tar.gz*" />
                                                <include name="launchers/marmotta-installer/target/*-installer.tar.gz*" />
                                                <include name="libraries/ldpath/ldpath-ldquery-cli/target/*-ldquery.tar.gz*" />
                                                <exclude name="*.asc.asc" />
                                            </fileset>
                                        </copy>
                                        <checksum algorithm="MD5" fileext=".md5">
                                            <fileset dir="${basedir}/target/${project.version}">
                                                <include name="*.zip" />
                                                <include name="*.tar.gz" />
                                            </fileset>
                                        </checksum>
                                        <checksum algorithm="SHA1" fileext=".sha1">
                                            <fileset dir="${basedir}/target/${project.version}">
                                                <include name="*.zip" />
                                                <include name="*.tar.gz" />
                                            </fileset>
                                        </checksum>
                                        <exec executable="./build/git-tag-revision.sh" outputproperty="checksum.git" os="Linux,Solaris,Mac OS X">
                                            <arg value="${project.version}" />
                                        </exec>
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-installer.zip" algorithm="SHA1" property="checksum.installer.zip" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-installer.tar.gz" algorithm="SHA1" property="checksum.installer.tgz" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-ldquery.zip" algorithm="SHA1" property="checksum.ldquery.zip" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-ldquery.tar.gz" algorithm="SHA1" property="checksum.ldquery.tgz" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-src.zip" algorithm="SHA1" property="checksum.src.zip" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-src.tar.gz" algorithm="SHA1" property="checksum.src.tgz" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-webapp.zip" algorithm="SHA1" property="checksum.webapp.zip" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-webapp.tar.gz" algorithm="SHA1" property="checksum.webapp.tgz" />
                                        <echo file="${basedir}/target/vote.txt">
From: ${username}@apache.org
To: dev@marmotta.apache.org
Subject: [VOTE] Release Apache Marmotta ${project.version}

A candidate for the Marmotta ${project.version} release is available at:

https://dist.apache.org/repos/dist/dev/marmotta/${project.version}/

The release candidate is based on the sources tagged with ${project.version} in:

https://git-wip-us.apache.org/repos/asf/marmotta.git

The checksum of this commit is ${checksum.git}

The release candidate consists of the following source distribution archives:
- apache-marmotta-${project.version}-src.[zip|tar.gz]
  SHA1 of ZIP: ${checksum.src.zip}
  SHA1 of TGZ: ${checksum.src.tgz}

In addition, the following supplementary binary distributions are provided:
- apache-marmotta-${project.version}-installer.[zip|tar.gz]
  SHA1 of ZIP: ${checksum.installer.zip}
  SHA1 of TGZ: ${checksum.installer.tgz}
- apache-marmotta-${project.version}-ldquery.[zip|tar.gz]
  SHA1 of ZIP: ${checksum.ldquery.zip}
  SHA1 of TGZ: ${checksum.ldquery.tgz}
- apache-marmotta-${project.version}-webapp.[zip|tar.gz]
  SHA1 of ZIP: ${checksum.webapp.zip}
  SHA1 of TGZ: ${checksum.webapp.tgz}

A staged Maven repository is available for review at:

https://repository.apache.org/

Please vote on releasing this package as Apache Marmotta ${project.version}.
The vote is open for the next 72 hours and passes if a majority of at
least three +1 Marmotta PMC votes are cast.

[ ] +1 Release this package as Apache Marmotta ${project.version}
[ ]  0 I don't feel strongly about it, but I'm okay with the release
[ ] -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 https://dist.apache.org/repos/dist/dev/marmotta/:

cd /path/to/marmotta-dev
mv ${basedir}/target/${project.version} ${project.version}
svn add ${project.version}
svn commit -m 'Apache Marmotta ${project.version} release candidate' ${project.version}

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>

    <modules>
        <module>parent</module>
        <module>build</module>
        <module>client</module>
        <module>commons</module>
        <module>extras</module>
        <module>launchers</module>
        <module>libraries</module>
        <module>loader</module>
        <module>platform</module>
    </modules>

</project>
