<?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.   
-->
<!-- 
    Maven release plugin requires the project tag to be on a single line. 
-->
<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/branches/1.0.x</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.3</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@openjpa.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@openjpa.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@openjpa.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@openjpa.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>Albert Lee</name></developer>
        <developer><name>Brian McCallister</name></developer>
        <developer><name>Bryan Noll</name></developer>
        <developer><name>Catalina Wei</name></developer>
        <developer><name>Craig Russell</name></developer>
        <developer><name>David Ezzio</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>

    <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-lib-5</module>
                <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>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>rat-maven-plugin</artifactId>
                        <version>1.0-alpha-3</version>
                        <executions>
                            <execution>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <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>
                            <exclude>release.properties</exclude>
                        </excludes>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.4</version>
                        <executions>
                            <execution>
                                <id>attach-javadoc</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                            <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>
                                    <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>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.0-alpha-3</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>2.0-beta-7</version>
                        <configuration>
                            <useReleaseProfile>false</useReleaseProfile>
                            <goals>deploy</goals>
                            <arguments>-Prelease</arguments>
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </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>
                        <version>1.0-alpha-1</version>
                        <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>

    <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.4</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>apache.releases</id>
        <url>scp://people.apache.org/home/${user.name}/public_html/openjpa/${pom.version}/staging-repo</url>
      </repository>
      <snapshotRepository>
        <id>apache.releases</id>
        <url>scp://people.apache.org/home/${user.name}/public_html/openjpa/${pom.version}/staging-repo</url>
        <uniqueVersion>false</uniqueVersion>
      </snapshotRepository>
      <site>
        <id>apache.releases</id>
        <url>scp://people.apache.org/home/${user.name}/public_html/openjpa/${pom.version}/staging-site</url>
      </site>
    </distributionManagement>
    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/openjpa/tags/1.0.3</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/openjpa/tags/1.0.3</developerConnection>
        <url>http://svn.apache.org/repos/asf/openjpa/tags/1.0.3</url>
    </scm>
</project>
