openjpa/openjpa-project/pom.xml

413 lines
19 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--
To build the distribution files from project root:
mvn clean compile package -Dtest=false
To build and deploy a full digned release with docs, run:
mvn clean deploy -Pjavadoc-profile,docbook-profile,sign-release
Note that to sign the release, you need to have "gpg" installed and
create a key. See http://apache.org/dev/release-signing.html
-->
<modelVersion>4.0.0</modelVersion>
<artifactId>openjpa-project</artifactId>
<packaging>pom</packaging>
<name>OpenJPA Distribution</name>
<parent>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>0.9.6-incubating-SNAPSHOT</version>
</parent>
<properties>
<openjpa.release.keyAlias>${user.name}@apache.org</openjpa.release.keyAlias>
<openjpa.assembly.finalName>openjpa-${version}</openjpa.assembly.finalName>
<openjpa.assembly.outputDirectory>${project.basedir}/target/assembly</openjpa.assembly.outputDirectory>
</properties>
<build>
<!-- needed to let maven pass the "compile" phase -->
<testSourceDirectory>/none/</testSourceDirectory>
<!-- filter site resources -->
<resources>
<resource>
<directory>${project.basedir}/src/site</directory>
<!-- targetPath is relative to target/classes/ -->
<targetPath>../filtered-site</targetPath>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<!--
Manually build an aggregate jar of all the other
openjpa-* jars using ant. We cannot use the assembly
plugin, since it doesn't provide support for appending
multiple same-named files to each other (which is
required for correctly aggregating services files).
-->
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>build-single-jar</id>
<phase>process-classes</phase>
<configuration>
<tasks>
<unjar overwrite="false"
dest="${basedir}/target/classes">
<fileset dir="${basedir}/..">
<include name="*/target/openjpa-*.jar" />
</fileset>
</unjar>
<!--
need to manually concatenate the services
resources so they are aggregated
-->
<macrodef name="aggregate-file">
<attribute name="servicename" />
<sequential>
<echo>
Building service: @{servicename}
</echo>
<concat
destfile="${basedir}/target/classes/META-INF/services/@{servicename}">
<fileset dir="${basedir}/.."
includes="*/src/main/resources/META-INF/services/@{servicename}" />
</concat>
</sequential>
</macrodef>
<aggregate-file
servicename="org.apache.openjpa.lib.conf.ProductDerivation" />
<aggregate-file
servicename="javax.persistence.spi.PersistenceProvider" />
<aggregate-file
servicename="org.apache.openjpa.kernel.exps.ExpressionParser" />
<mkdir dir="${basedir}/target/aggregate" />
<jar
destfile="${basedir}/target/aggregate/openjpa-${version}.jar"
basedir="${basedir}/target/classes">
<manifest>
<!-- Add roughly the same manifest info that the maven-jar-plugin uses -->
<attribute name="Built-By"
value="${user.name}" />
<attribute name="Build-Jdk"
value="${java.version}" />
<attribute name="Specification-Title"
value="${project.name}" />
<attribute name="Specification-Version"
value="${project.version}" />
<attribute name="Specification-Vendor"
value="${project.organization.name}" />
<attribute name="Implementation-Title"
value="${project.name}" />
<attribute name="Implementation-Version"
value="${project.version}" />
<attribute
name="Implementation-Vendor-Id" value="${project.groupId}" />
<attribute name="Implementation-Vendor"
value="${project.organization.name}" />
<!-- set premain class -->
<attribute name="Premain-Class"
value="org.apache.openjpa.enhance.PCEnhancerAgent" />
</manifest>
</jar>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>bin</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
<configuration>
<descriptor>assembly.xml</descriptor>
<finalName>${openjpa.assembly.finalName}</finalName>
<outputDirectory>${openjpa.assembly.outputDirectory}</outputDirectory>
<workDirectory>target/work</workDirectory>
</configuration>
</execution>
<execution>
<id>sources</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
<configuration>
<descriptor>source-assembly.xml</descriptor>
<finalName>openjpa-${version}</finalName>
<outputDirectory>${project.basedir}/target/assembly</outputDirectory>
<workDirectory>target/work</workDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--
Copy over site files from src/site to target/filtered-site
so we can filter resources and include other generated
content from the openjpa-project module.
-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>prefilter-site</id>
<phase>site</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-5</version>
<configuration>
<siteDirectory>target/filtered-site</siteDirectory>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!--
Docbook profile. Docs can be built by running:
mvn package -Dtest=false -Pjavadoc-profile,docbook-profile
-->
<profile>
<id>docbook-profile</id>
<build>
<plugins>
<!-- build the docs when creating the site from docbook source -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<!-- destdir="${project.build.directory}/site/manual" -->
<tasks>
<echo>Building docbook manual</echo>
<!-- download stylesheets -->
<property name="stylesheet" value="1.69.1.tar.bz2"/>
<property name="stylesheet.dir" value="${project.basedir}/target/stylesheets"/>
<mkdir dir="${stylesheet.dir}"/>
<get src="http://docbook.sourceforge.net/release/xsl/${stylesheet}" usetimestamp="true" dest="${stylesheet.dir}/${stylesheet}"/>
<untar src="${stylesheet.dir}/${stylesheet}" dest="${stylesheet.dir}" compression="bzip2" overwrite="false"/>
<style includes="**/manual.xml"
force="true"
basedir="${project.basedir}/src/doc/manual"
destdir="${project.basedir}/target/manual"
style="manual-xhtml.xsl"
classpathref="maven.runtime.classpath">
<factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
</style>
<!--
<style includes="**/manual.xml"
force="true"
basedir="${project.basedir}/src/doc/manual"
destdir="${project.basedir}/target/manual"
style="manual-xhtml-chunk.xsl"
classpathref="maven.runtime.classpath">
<factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
</style>
-->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<activation>
<property>
<name>builddocs</name>
<value>true</value>
</property>
</activation>
</profile>
<!-- sign the release files -->
<profile>
<id>sign-release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<configuration>
<tasks>
<echo>Signing release files...</echo>
<macrodef name="sign-file">
<attribute name="file" />
<sequential>
<delete failonerror="false"
file="@{file}.asc"/>
<exec executable="gpg"
failonerror="true">
<arg value="--batch"/>
<arg value="--verbose"/>
<arg value="--default-key"/>
<arg value="${openjpa.release.keyAlias}"/>
<arg value="--armor"/>
<arg value="--detach-sig"/>
<arg value="@{file}"/>
</exec>
</sequential>
</macrodef>
<sign-file file="${openjpa.assembly.outputDirectory}/${openjpa.assembly.finalName}.zip"/>
<sign-file file="${openjpa.assembly.outputDirectory}/${openjpa.assembly.finalName}-sources.zip"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<activation>
<property>
<name>sign</name>
<value>true</value>
</property>
</activation>
</profile>
</profiles>
<!-- need to explicitly list dependencies for assembly to work -->
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-all</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-lib</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-kernel</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-kernel-4</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-kernel-5</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-jdbc</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-jdbc-5</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-persistence</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-persistence-jdbc</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-xmlstore</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-examples</artifactId>
<version>${pom.version}</version>
</dependency>
<!-- included so we can include it in the distribution -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
<!-- jars needed for for docbook -->
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.6.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-trax</artifactId>
<version>1.6.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>bcel</groupId>
<artifactId>bcel</artifactId>
<version>5.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>