You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by dw...@apache.org on 2010/02/12 21:22:32 UTC

svn commit: r909595 - /openjpa/trunk/openjpa-osgi/pom.xml

Author: dwoods
Date: Fri Feb 12 20:22:29 2010
New Revision: 909595

URL: http://svn.apache.org/viewvc?rev=909595&view=rev
Log:
merge in updates from trunk/openjpa/pom.xml and waiting for testing from Apache Aries before merging into openjpa/pom.xml

Modified:
    openjpa/trunk/openjpa-osgi/pom.xml

Modified: openjpa/trunk/openjpa-osgi/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-osgi/pom.xml?rev=909595&r1=909594&r2=909595&view=diff
==============================================================================
--- openjpa/trunk/openjpa-osgi/pom.xml (original)
+++ openjpa/trunk/openjpa-osgi/pom.xml Fri Feb 12 20:22:29 2010
@@ -24,7 +24,7 @@
 <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>
     <artifactId>openjpa-osgi</artifactId>
-    <packaging>jar</packaging>
+    <packaging>bundle</packaging>
     <name>OpenJPA Aggregate Jar for OSGi</name>
     <parent>
         <groupId>org.apache.openjpa</groupId>
@@ -34,219 +34,219 @@
 
     <build>
         <plugins>
+            <!--
+                Need to disable source plugin here, as it overwrites the shade
+                plugin created sources jar.
+            -->
             <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).
-                -->
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
+                <artifactId>maven-source-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>none</phase> 
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Create our aggregate JAR -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>build-single-jar</id>
-                        <phase>compile</phase>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
                         <configuration>
-                            <tasks>
-                                <unjar overwrite="false" dest="${basedir}/target/classes">
-                                    <fileset dir="${basedir}/..">
-                                        <include name="*/target/openjpa-*.jar" />
-                                        <exclude name="*/target/openjpa-2*.jar" />
-                                        <exclude name="*/target/openjpa-all-*.jar" />
-                                        <exclude name="*/target/openjpa-examples-*.jar" />
-                                        <exclude name="**/*-tests.jar" />
-                                        <exclude name="**/*-sources.jar" />
-                                        <exclude name="**/*-javadoc.jar" />
-                                        <exclude name="openjpa-integration/**/target/openjpa-all-*.jar" />
-                                    </fileset>
-                                </unjar>
-
-                                <!--
-                                    need to manually concatinate the services 
-                                    resources so they are aggregated
+                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                            <createSourcesJar>true</createSourcesJar>
+                            <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
+                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                            <!--
+                                 Specify a subset of depends to include,
+                                 which must match the <dependencies> section.
+                            -->
+                            <artifactSet>
+                                <includes>
+                                    <include>org.apache.openjpa:openjpa-lib</include>
+                                    <include>org.apache.openjpa:openjpa-kernel</include>
+                                    <include>org.apache.openjpa:openjpa-jdbc</include>
+                                    <include>org.apache.openjpa:openjpa-persistence</include>
+                                    <include>org.apache.openjpa:openjpa-persistence-jdbc</include>
+                                    <include>org.apache.openjpa:openjpa-xmlstore</include>
+                                    <include>org.apache.openjpa:openjpa-slice</include>
+                                </includes>
+                            </artifactSet>
+                            <!-- OpenJPA unique META-INF setup -->
+                            <transformers>
+                                <!-- Need to concatinate the services resources:
+                                 org.apache.openjpa.lib.conf.ProductDerivation
+                                 javax.persistence.spi.PersistenceProvider
+                                 org.apache.openjpa.kernel.exps.ExpressionParser
                                 -->
-                                <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" />
-                            </tasks>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                                <!-- Need to add some MANIFEST.MF metadata -->
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <manifestEntries>
+                                        <Main-Class>org.apache.openjpa.conf.OpenJPAVersion</Main-Class>
+                                        <Premain-Class>org.apache.openjpa.enhance.PCEnhancerAgent</Premain-Class>
+                                        <Agent-Class>org.apache.openjpa.enhance.InstrumentationFactory</Agent-Class>
+                                        <Can-Redefine-Classes>true</Can-Redefine-Classes>
+                                        <Can-Retransform-Classes>true</Can-Retransform-Classes>
+                                        <Implementation-Title>Apache OpenJPA Aggregate JAR</Implementation-Title>
+                                        <Specification-Title>JSR-317 Java Persistence</Specification-Title>
+                                        <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
+                                        <Specification-Version>2.0</Specification-Version>
+                                    </manifestEntries>
+                                </transformer>
+                            </transformers>
                         </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
                     </execution>
                 </executions>
             </plugin>
 
-            <!--
-                create enhancer pre-main and agent-main attributes
-            -->
+            <!-- extract the shaded jar so a bundle can be created -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-                        <manifest>
-                           <mainClass>org.apache.openjpa.conf.OpenJPAVersion</mainClass>
-                        </manifest>
-                        <manifestEntries>
-                            <Premain-Class>
-                                org.apache.openjpa.enhance.PCEnhancerAgent
-                            </Premain-Class>
-                            <Can-Redefine-Classes>true</Can-Redefine-Classes>
-                            <Agent-Class>
-                                org.apache.openjpa.enhance.InstrumentationFactory
-                            </Agent-Class>
-                            <Can-Redefine-Classes>true</Can-Redefine-Classes>                            
-                            <Can-Retransform-Classes>true</Can-Retransform-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <unzip src="${project.build.directory}/${pom.artifactId}-${pom.version}.jar" dest="${project.build.directory}/classes"/>
+                            </tasks>
+                        </configuration>
+                    </execution>
+                </executions>
             </plugin>
 
+            <!-- create an OSGi bundle -->
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Activator>org.apache.openjpa.osgi.PersistenceActivator</Bundle-Activator>
-                        <Bundle-Name>${artifactId}</Bundle-Name>
-                        <Bundle-SymbolicName>${groupId}.${artifactId};singleton=true</Bundle-SymbolicName>
-                        <Bundle-DocURL>http://openjpa.apache.org/documentation.html</Bundle-DocURL>
-                        <Implementation-Title>Apache OpenJPA</Implementation-Title>
-                        <Implementation-Version>${project.version}</Implementation-Version>
-                        <Specification-Title>JSR-317 Java Persistence</Specification-Title>
-                        <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
-                        <Specification-Version>2.0</Specification-Version>
                         <!-- OSGi Bundle Metadata -->
-                        <Private-Package>org.openjpa.lib.ant*,org.apache.jdbc.ant*,META-INF*</Private-Package>
-                        <Export-Package>!META-INF*,!org.openjpa.lib.ant*,!org.apache.jdbc.ant*,org.apache.openjpa*</Export-Package>
-                        <Import-Package>com.ibm.*;resolution:=optional,org.postgresql.*;resolution:=optional,org.apache.tools.ant.*;resolution:=optional,org.apache.log4j.*;resolution:=optional,javax.activation.xa*;resolution:=optional,javax.jms.*;resolution:=optional,javax.transaction.*;resolution:=optional,javax.validation.*;resolution:=optional,javax.xml.bind.*;resolution:=optional,serp.*;resolution:=optional,*</Import-Package>
-                        <Require-Bundle>org.apache.geronimo.specs.geronimo-jpa_2.0_spec;bundle-version="[1.0.0,2.0.0)"</Require-Bundle>
-                        <!-- Eclipse metadata
+                        <Bundle-DocURL>${project.url}</Bundle-DocURL>
+                        <Bundle-Activator>org.apache.openjpa.osgi.PersistenceActivator</Bundle-Activator>
+                        <Private-Package />
+                        <Export-Package>org.apache.openjpa.*;version=${pom.version}</Export-Package>
+                        <Import-Package>com.ibm.*;resolution:=optional,org.postgresql.*;resolution:=optional,org.apache.tools.ant.*;resolution:=optional,org.apache.log4j.*;resolution:=optional,javax.activation.xa*;resolution:=optional,javax.jms.*;version="[1.1.0,1.2)";resolution:=optional,javax.transaction.*;version="[1.1.0,1.2)";resolution:=optional,javax.validation.*;version="[1.0.0,1.1)";resolution:=optional,javax.xml.bind.*;resolution:=optional,serp.*;resolution:=optional,javax.persistence.*;version="[2.0.0,2.1)",*</Import-Package>
+                        <!-- Eclipse metadata -->
                         <Eclipse-Autostart>false</Eclipse-Autostart>
                         <Bundle-ClassPath>.</Bundle-ClassPath>
-                        -->
                     </instructions>
-                    <unpackBundle>true</unpackBundle>
                 </configuration>
-                <executions>
-                    <execution>
-                        <id>bundle-manifest</id>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>manifest</goal>
-                        </goals>
-                    </execution>
-                </executions>
             </plugin>
         </plugins>
     </build>
+
     <dependencies>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>1.4.0</version>
-            <scope>provided</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.felix</groupId>
-                    <artifactId>org.osgi.foundation</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
+        <!-- JARs to include in aggregate JAR via maven-shade-plugin -->
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-lib</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-jdbc</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
+            <!-- 
+                 Need to exclude jaxb, so the following will not get included
+                 as compile depends in the aggregate JAR by the shade plugin:
+                     javax.xml.bind:jaxb-api:jar:2.0
+                     javax.xml.bind:jsr173_api:jar:1.0
+                     javax.activation:activation:jar:1.1
+                     com.sun.xml.bind:jaxb-impl:jar:2.0.5
+            -->
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.bind</groupId>
+                    <artifactId>jaxb-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.xml.bind</groupId>
+                    <artifactId>jaxb-impl</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- Need to manually add back optional openjpa-jdbc depends -->
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <scope>compile</scope>
+            <optional>true</optional>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.bind</groupId>
+                    <artifactId>jsr173_api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.activation</groupId>
+                    <artifactId>activation</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+            <scope>compile</scope>
+            <optional>true</optional>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.bind</groupId>
+                    <artifactId>jsr173_api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.activation</groupId>
+                    <artifactId>activation</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
+        <!-- end optional openjpa-jdbc depends -->
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-persistence</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-persistence-jdbc</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-xmlstore</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-slice</artifactId>
             <version>${pom.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>net.sourceforge.serp</groupId>
-            <artifactId>serp</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-collections</groupId>
-            <artifactId>commons-collections</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-pool</groupId>
-            <artifactId>commons-pool</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jta_1.1_spec</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.0_spec</artifactId>
-        </dependency>
-        <!-- optional dependencies -->
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jms_1.1_spec</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.0_spec</artifactId>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>1.4.0</version>
             <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>org.osgi.foundation</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
 </project>