<?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.1.0-incubating</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.incubator.apache.org</url>

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

    <inceptionYear>2012</inceptionYear>
    <licenses>
        <license>
            <name>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>andy</id>
            <name>Andy Seaborne</name>
            <email>andy@apache.org</email>
            <organization>The Apache Software Foundation</organization>
        </developer>
        <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>

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

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

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

    <mailingLists>
        <mailingList>
            <name>users</name>
            <post>users@marmotta.incubator.apache.org</post>
            <subscribe>users-subscribe@marmotta.incubator.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@marmotta.incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-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.incubator.apache.org</post>
            <subscribe>dev-subscribe@marmotta.incubator.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@marmotta.incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-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.incubator.apache.org</post>
            <subscribe>commits-subscribe@marmotta.incubator.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@marmotta.incubator.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-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.4</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 ${arguments}</arguments>

		    <pushChanges>false</pushChanges>
                </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-backend-linkeddata/target/*-ldpath.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-backend-linkeddata/target/*-ldpath.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>
                                        <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}-ldpath.zip" algorithm="SHA1" property="checksum.ldpath.zip" />
                                        <checksum file="${basedir}/target/${project.version}/apache-marmotta-${project.version}-ldpath.tar.gz" algorithm="SHA1" property="checksum.ldpath.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.incubator.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/incubator/marmotta/${project.version}/

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

https://git-wip-us.apache.org/repos/asf/incubator-marmotta.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}-ldpath.[zip|tar.gz]
  SHA1 of ZIP: ${checksum.ldpath.zip}
  SHA1 of TGZ: ${checksum.ldpath.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/incubator/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>platform</module>
    </modules>

</project>
