<?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>
    <prerequisites>
        <maven>2.0.4</maven>
    </prerequisites>
    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa-parent</artifactId>
    <packaging>pom</packaging>
    <name>OpenJPA</name>
    <description>OpenJPA</description>

    <properties>
        <scm.dir>svn.apache.org/repos/asf/openjpa/trunk</scm.dir>
        <openjpa.version>${pom.version}</openjpa.version>
    </properties>

    <!--
        Changing this version needs to also be done in all children poms
        See: http://jira.codehaus.org/browse/MNG-624
    -->
    <version>1.0.0</version>
    <url>http://openjpa.apache.org</url>
    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/OPENJPA</url>
    </issueManagement>
    <inceptionYear>2006</inceptionYear>
    <mailingLists>
        <mailingList>
            <name>OpenJPA Developer List</name>
            <subscribe>dev-subscribe@apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@apache.org</unsubscribe>
            <post>dev@openjpa.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/openjpa-dev/</archive>
        </mailingList>
        <mailingList>
            <name>OpenJPA Users List</name>
            <subscribe>users-subscribe@apache.org</subscribe>
            <unsubscribe>users-unsubscribe@apache.org</unsubscribe>
            <post>users@openjpa.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/openjpa-users/</archive>
        </mailingList>
        <mailingList>
            <name>OpenJPA Commits List</name>
            <subscribe>commits-subscribe@openjpa.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@openjpa.apache.org</unsubscribe>
            <post>commits@openjpa.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/openjpa-commits/</archive>
        </mailingList>
    </mailingLists>
    <developers>
        <!--
            Committer list taken from http://openjpa.apache.org/committers.html
        -->
        <developer><name>Abe White</name></developer>
        <developer><name>Brian McCallister</name></developer>
        <developer><name>Bryan Noll</name></developer>
        <developer><name>Craig Russell</name></developer>
        <developer><name>David Wisneski</name></developer>
        <developer><name>Eddie O'Neil</name></developer>
        <developer><name>Geir Magnusson Jr.</name></developer>
        <developer><name>Kevin Sutter</name></developer>
        <developer><name>Marc Prud'hommeaux</name></developer>
        <developer><name>Michael Dick</name></developer>
        <developer><name>Patrick Linskey</name></developer>
        <developer><name>Pinaki Poddar</name></developer>
        <developer><name>Srinivasa Segu</name></developer>
        <developer><name>Stephen Kim</name></developer>
    </developers>
    <licenses>
        <license>
            <name>Apache Software License 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org</url>
    </organization>
    <scm>
        <connection>scm:svn:http://${scm.dir}</connection>
        <developerConnection>scm:svn:https://${scm.dir}</developerConnection>
        <url>https://${scm.dir}</url>
    </scm>
    <modules>
        <module>openjpa-lib</module>
        <module>openjpa-kernel</module>
        <module>openjpa-jdbc</module>
        <module>openjpa-xmlstore</module>
        <module>openjpa-all</module>
        <module>openjpa-project</module>
        <module>openjpa-integration</module>
    </modules>
    <profiles>
        <profile>
            <id>jdk1.5</id>
            <activation>
                <jdk>1.5</jdk>
            </activation>
            <modules>
                <module>openjpa-persistence</module>
                <module>openjpa-persistence-jdbc</module>
                <module>openjpa-kernel-5</module>
                <module>openjpa-jdbc-5</module>
                <module>openjpa-examples</module>
            </modules>
        </profile>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>release</name>
                </property>
            </activation>
            <modules>
                <module>openjpa-project</module>
            </modules>
        </profile>

        <!--
            Generate the documentation using the YDoc UML generation plugin.
            Assumes you have the YDoc libraries locally, as well as a valid
            YDoc license file. Example usage for building the docs:

            mvn process-classes -Pydoc-profile,javadoc-profile -Dydoc.home=${HOME}/.m2/privaterepos/ydoc/ydoc-2.2_04-jdk1.5 -Dydoc.license=${HOME}/.m2/privaterepos/ydoc/ydoc.license
        -->
        <profile>
            <id>ydoc-profile</id>
            <properties>
                <javadoc.additionalparam>
                    -generic
                    -umlautogen
                    -tag param
                    -tag return
                    -tag see
                    -ytag y.uml
                    -license ${ydoc.license}
                    -filter ydoc.filters.ExcludeFilter
                    -filterpath ${ydoc.home}/lib/ydoc.jar
                    -doclet ydoc.doclets.YStandard
                    -docletpath ${ydoc.home}/lib/ydoc.jar${path.separator}${ydoc.home}/lib/class2svg.jar${path.separator}${ydoc.home}/resources
                    ${ydoc.params}
                </javadoc.additionalparam>
            </properties>
        </profile>

        <profile>
            <!--                        
                Javadoc profile. Docs can be built by running:
                    mvn process-resources -Dtest=false -Pjavadoc-profile
            -->  
            <id>javadoc-profile</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.2</version>
                        <executions>
                            <execution>
                                <phase>process-classes</phase>
                                <goals><goal>javadoc</goal></goals>
                                <configuration>
                                    <additionalparam>
                                        ${javadoc.additionalparam}
                                    </additionalparam>
                                    <aggregate>true</aggregate>
                                    <subpackages>org.apache.openjpa</subpackages>

                                    <verbose>false</verbose>
                                    <!-- <linksource>true</linksource> -->
                                    <maxmemory>512m</maxmemory>
                                    <links>
                                        <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
                                        <link>http://java.sun.com/javaee/5/docs/api</link>
                                        <link>http://jakarta.apache.org/commons/collections/api-release</link>
                                    </links>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <activation>
                <property>
                    <name>builddocs</name>
                    <value>true</value>
                </property>
            </activation>
        </profile>

        <profile>
            <!--                        
                Apache License check plugin. Run manually with:
                    mvn rat:check
                Or add it to the verify phase with:
                    mvn verify -Plicense-verify-profile
            -->  
            <id>license-verify-profile</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>rat-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>enable-security</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <test.env>-Dtest.basedir=${basedir}/..</test.env>
                <policy.file>${basedir}/../openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy</policy.file>
                <surefire.jvm.args>-Djava.security.manager -Djava.security.policy=${policy.file} ${test.env}</surefire.jvm.args>
            </properties>
        </profile>

    </profiles>

    <repositories>
        <repository>
            <id>central</id>
            <name>Maven Repository Switchboard</name>
            <url>http://www.ibiblio.org/maven2</url>
        </repository>
        <repository>
    	    <id>java.net</id>
	        <url>https://maven-repository.dev.java.net/nonav/repository</url>
	        <layout>legacy</layout>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <!-- also include license and notice files in all the jars -->
            <resource>
                <directory>${basedir}/../openjpa-project/</directory>
                <includes>
                    <include>NOTICE.txt</include>
                    <include>LICENSE.txt</include>
                    <include>DISCLAIMER.txt</include>
                </includes>
                <targetPath>META-INF</targetPath>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <argLine>${surefire.jvm.args}</argLine>
                        <useFile>false</useFile>
                        <trimStackTrace>false</trimStackTrace>
                        <useSystemClassLoader>true</useSystemClassLoader>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>rat-maven-plugin</artifactId>
                    <configuration>
                        <excludeSubProjects>false</excludeSubProjects>
                        <numUnapprovedLicenses>0</numUnapprovedLicenses>
                        <excludes>
                            <!--
                                comments are usupported by
                                javax.persistence.Persistence
                            -->
                            <exclude>**/javax.persistence.spi.PersistenceProvider</exclude>

                            <!--
                                comments are usupported by our rsrc parser
                            -->
                            <exclude>**/*.rsrc</exclude>

                            <!-- General informational files -->
                            <exclude>openjpa-project/*.txt</exclude>
                            <exclude>README.txt</exclude>
                            <exclude>BUILDRELEASE</exclude>

                            <!-- generated content -->
                            <exclude>**/*.log</exclude>
                            <exclude>**/rat.txt</exclude>
                            <exclude>**/*.txt</exclude>
                            <exclude>**/org.apache.openjpa.revision.properties</exclude>
                            <exclude>**/target/**/*</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>jdepend-maven-plugin</report>
                            <!-- <report>jxr-maven-plugin</report> -->
                            <report>surefire-report-maven-plugin</report>
                            <report>maven-javadoc-plugin</report>
                            <report>project-team</report>
                            <report>mailing-list</report>
                            <report>issue-tracking</report>
                            <report>license</report>
                            <report>scm</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>taglist-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>


    <distributionManagement>
      <repository>
        <id>local-repository</id>
        <url>file://${basedir}/target/site/m2-repository/</url>
      </repository>
      <snapshotRepository>
        <id>local-repository</id>
        <url>file://${basedir}/target/site/m2-repository/</url>
        <uniqueVersion>false</uniqueVersion>
      </snapshotRepository>
      <site>
        <id>people.apache.org</id>
        <url>scpexe://${user.name}@people.apache.org/www/openjpa.apache.org/builds/${pom.version}</url>
      </site>
    </distributionManagement>
</project>
