<?xml version="1.0" encoding="UTF-8" standalone="no"?><!--

 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</groupId>
        <artifactId>apache</artifactId>
        <version>16</version>
    </parent>
    <groupId>org.apache.clerezza</groupId>
    <artifactId>reactor</artifactId>
    <packaging>pom</packaging>
    <name>Clerezza</name>
    <url>http://incubator.apache.org/clerezza/mvn-site/</url>
    <version>0.4-SNAPSHOT</version>
    <description>A reactor to build all of clerezza</description>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <profiles>
        <profile>
            <id>release</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <module>parent</module>
                <module>clerezza-jar-resource-bundle</module>
                <module>ext.com.ibm.icu</module>
                <module>ext.javax.mail</module>
                <module>ext.org.ops4j.pax.swissbox.tinybundles</module>
                <module>ext.org.apache.lucene</module>
                <module>internal.archetype</module>
                <module>scala-scripting</module>
                <module>jaxrs.extensions</module>
                <module>jaxrs.rdf.providers</module>
                <module>jaxrs.stanbol.fragments</module>
                <module>jaxrs.utils</module>
                <module>jaxrs.whiteboard.jersey</module>
                <module>maven-jaxrs-report-plugin</module>
                <!-- <module>maven-pladoc-plugin</module> -->
                <module>permissiondescriptions</module>
                <module>ssl.keygen</module>
                <module>provisioning</module>
                <module>osgi.services</module>
                <module>platform</module>
                <module>rdf</module>
                <module>rdf.cris</module>
                <module>rdf.enrichment</module>
                <module>rdf.locking</module>
                <!-- <module>shell</module>
                <module>shell.felixshellcommand</module> -->
                <module>site</module>
                <module>bundledevtool</module>
                <!-- <module>sshshell</module> -->
                <module>templating</module>
                <module>templating.seedsnipe</module>
                <module>tools.offline</module>
                <module>uima</module>
                <module>utils.customproperty</module>
                <module>utils.imageprocessing</module>
                <module>utils</module>
                <module>web.fileserver</module>
                <module>web.resources.jquery</module>
                <module>web.resources.scripts</module>
                <module>web.resources.yui</module>
                <module>rdf.storage.externalizer</module>

                <module>ext.virtuoso.jdbc</module>
                <module>rdf.virtuoso.storage</module>
                <!-- <module>platform.launcher.virtuoso</module> -->
            </modules>
        </profile>
        <profile>
            <id>rat</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-cli</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <excludes>
                                        <!-- File generated by maven-release-plugin -->
                                        <exclude>release.properties</exclude>
                                        <!-- hidden files -->
                                        <exclude>**/.*</exclude>
                                        <exclude>**/.*/*</exclude>
                                        <exclude>**/.*/**/*</exclude>
                                        <exclude>**/*.sh</exclude>
                                        <exclude>**/main/shell/**/*</exclude>
                                        <exclude>**/maven-eclipse.xml</exclude>
                                        <exclude>**/*.iml</exclude>
                                        <exclude>**/target/**/*</exclude>
                                        <exclude>**/src/test/**/*.nt</exclude>
                                        <exclude>**/src/test/**/*.ttl</exclude>
                                        <exclude>**/src/test/**/*.rdf</exclude>
                                        <exclude>**/src/test/**/*.txt</exclude>
                                        <exclude>**/src/test/**/*.n3</exclude>
                                        <exclude>**/src/test/**/*.json</exclude>
                                        <exclude>**/src/test/**/*.seed</exclude>
                                        <exclude>**/src/test/**/*.xrdf</exclude>
                                        <exclude>**/src/test/**/*.foaf</exclude>
                                        <exclude>**/src/test/**/*.turtle</exclude>
                                        <exclude>**/documentation.nt</exclude>
                                        <!-- yui is bsd licensed -->
                                        <exclude>web.resources.yui/src/main/resources/**/*</exclude>
                                        <exclude>web.resources.jquery/src/main/resources/org/apache/clerezza/web/resources/jquery/staticweb/**/*</exclude>
                                        <exclude>platform.scripting.scriptmanager/src/main/resources/org/apache/clerezza/platform/scripting/scriptmanager/scriptmanager-script-information.xhtml</exclude>
                                        <exclude>templating.seedsnipe/src/test/resources/org/apache/clerezza/templating/seedsnipe/libby-foaf.rdf</exclude>
                                        <exclude>platform.usermanager.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/reset_mail.txt</exclude>
                                        <exclude>rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/*</exclude>
                                        <exclude>platform.security.foafssl/ontologies/src/main/resources/org/apache/clerezza/foafssl/ontologies/*</exclude>
                                        <!-- text files for inclusion -->
                                        <exclude>platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/*.txt</exclude>
                                        <exclude>**/META-INF/services/*</exclude>
                                        <exclude>**/LICENSE*</exclude>
                                        <exclude>**/META-INF/MANIFEST.MF</exclude>
                                        <exclude>ssl.keygen/samplewebapp/src/main/webapp/cacert.crt</exclude>
                                        <exclude>web.fileserver/src/main/resources/org/apache/clerezza/web/fileserver/util/mime.types</exclude>
                                        <exclude>platform.content/src/main/resources/org/apache/clerezza/platform/content/staticweb/discoscripts/**/*</exclude>
                                        <exclude>platform.content/src/main/resources/org/apache/clerezza/platform/content/*</exclude>
                                    </excludes>
                                    <numUnapprovedLicenses>0</numUnapprovedLicenses>
                                    <excludeSubProjects>false</excludeSubProjects>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                </plugins>
            </build>
        </profile>
        <profile>
            <id>additions</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <modules>
                <!-- tests depends on availability of right version of imagemagick, see CLEREZZA-326-->
                <module>utils.imagemagick</module>
                <!-- have dependencies that are not in maven central -->
                <module>ext.org.jruby</module>
                <module>ext.org.openrdf.sesame</module>
                <module>platform.launcher.sesame</module>
                <module>rdf.sesame.storage</module>
                <module>rdf.sesame.parser</module>
            </modules>
        </profile>
        <profile>
            <id>site-build</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <pluginRepositories>
                <pluginRepository>
                    <id>apache.snapshots</id>
                    <url>http://repository.apache.org/snapshots/</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.xsite</groupId>
                <artifactId>xsite-maven-plugin</artifactId>
            </plugin>
            <!-- having this here has the effect that the resources copied by the resources plugin (below) have
            priority over the remote resources -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>        
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <useReleaseProfile>false</useReleaseProfile>
                    <goals>deploy</goals>
                    <arguments>-Papache-release </arguments>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <targetPath>META-INF</targetPath>
                <filtering>false</filtering>
                <directory>${basedir}</directory>
                <includes>
                    <include>NOTICE</include>
                    <include>LICENSE.*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>
    <distributionManagement>
        <!-- where to deploy the web site -->
        <site>
            <id>people.apache.org</id>
            <url>scp://people.apache.org/www/incubator.apache.org/clerezza/mvn-site/</url>
        </site>

        <!-- where to deploy the artifacts -->
        <repository>
            <id>apache.releases.https</id>
            <name>Apache Release Distribution Repository</name>
            <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
        </repository>
        <snapshotRepository>
            <id>apache.snapshots.https</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <!-- jira -->
    <issueManagement>
        <system>Jira</system>
        <url>https://issues.apache.org/jira/browse/CLEREZZA</url>
    </issueManagement>
    <ciManagement>
        <system>Jenkins</system>
        <url>https://builds.apache.org/job/clerezza-trunk-1.6/</url>
    </ciManagement>


    <scm>
        <url>http://git.apache.org/clerezza.git/</url>
        <connection>scm:git:git://git.apache.org/clerezza.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/clerezza.git</developerConnection>
      <tag>reactor-0.3</tag>
  </scm>

    <!-- lets generate reports -->
    <reporting>
        <plugins>
            <!-- javadoc -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <!-- Version 2.6  passes invalid arguments to the wadl doclet -->
                <version>2.4</version>
            </plugin>

            <!-- test results -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.4.2</version>
            </plugin>

            <!-- pmd reports (potential bugs, suboptimal code, duplicate code) -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <targetJdk>1.6</targetJdk>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.clerezza</groupId>
                <artifactId>maven-jaxrs-report-plugin</artifactId>
                <version>0.1-incubating</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-plugin-plugin</artifactId>
                <version>2.5.1</version>
            </plugin>
            <!--            <plugin>
                <groupId>org.apache.clerezza</groupId>
                <artifactId>maven-pladoc-plugin.core</artifactId>
                <version>0.1</version>
            </plugin> -->
        </plugins>
    </reporting>
</project>
