dev@glassfish.java.net

Re: [Ask/Help]About glassfish-jar packaging

From: Tang Yong <tangyong_at_cn.fujitsu.com>
Date: Thu, 25 Apr 2013 17:43:00 +0900

Of course, other than wrapping .class file into bundle jar, I can also
integrate .java file into my bundle's source structure. However, to some
extent, wrapping .class file into bundle jar should be better choice
while I does not change any source of wrapped file.

Thanks
--Tang

Tang Yong wrote:
> Hi Romain,
> CC: Sahoo,
>
> I have a question about glassfish-jar packaging, The attachment is my
> pom and osgi.bundle files.
>
> [Question]
> I wish wrapping org.apache.felix.bundlerepository related class file
> into my bundle jar.
>
> If I make packaging is bundle liking the following,
>
> <artifactId>glassfish-obr-builder</artifactId>
> <version>4.0-SNAPSHOT</version>
> <name>Builds OBR from a set of OSGi bundles</name>
> <packaging>bundle</packaging>
>
> Then, wrapping is successful.
>
> However, once I make packaging is glassfish-jar, wrapping will failed
> and org.apache.felix.bundlerepository related class file will be not
> wrapped into my bundle jar.
>
> Whether for glassfish-jar, the feature is not supported? Or is there
> something wrong with me?
>
> Thanks
> --Tang
>
>
> ------------------------------------------------------------------------
>
> #
> # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
> #
> # Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
> #
> # The contents of this file are subject to the terms of either the GNU
> # General Public License Version 2 only ("GPL") or the Common Development
> # and Distribution License("CDDL") (collectively, the "License"). You
> # may not use this file except in compliance with the License. You can
> # obtain a copy of the License at
> # https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
> # or packager/legal/LICENSE.txt. See the License for the specific
> # language governing permissions and limitations under the License.
> #
> # When distributing the software, include this License Header Notice in each
> # file and include the License file at packager/legal/LICENSE.txt.
> #
> # GPL Classpath Exception:
> # Oracle designates this particular file as subject to the "Classpath"
> # exception as provided by Oracle in the GPL Version 2 section of the License
> # file that accompanied this code.
> #
> # Modifications:
> # If applicable, add the following below the License Header, with the fields
> # enclosed by brackets [] replaced by your own identifying information:
> # "Portions Copyright [year] [name of copyright owner]"
> #
> # Contributor(s):
> # If you wish your version of this file to be governed by only the CDDL or
> # only the GPL Version 2, indicate your decision by adding "[Contributor]
> # elects to include this software in this distribution under the [CDDL or GPL
> # Version 2] license." If you don't indicate a single choice of license, a
> # recipient has the option to distribute your version of this file under
> # either the CDDL, the GPL Version 2 or to extend the choice of license to
> # its licensees as provided above. However, if you add GPL Version 2 code
> # and therefore, elected the GPL Version 2 license, then the option applies
> # only if the new code is made subject to such option by the copyright
> # holder.
> #
>
> -exportcontents: !*
> Import-Package: \
> !org.apache.felix.bundlerepository.impl.wrapper, \
> !org.osgi.service.obr, \
> *
> Private-Package: \
> org.kxml2.io, \
> org.xmlpull.v1, \
> org.apache.felix.utils*, \
> org.apache.felix.bundlerepository.impl*, \
> org.glassfish.obrbuilder.*
> Bundle-Activator: org.glassfish.obrbuilder.ObrBuilderActivator
>
>
>
> ------------------------------------------------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
>
> DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>
> Copyright (c) 2010-2013 Oracle and/or its affiliates. All rights reserved.
>
> The contents of this file are subject to the terms of either the GNU
> General Public License Version 2 only ("GPL") or the Common Development
> and Distribution License("CDDL") (collectively, the "License"). You
> may not use this file except in compliance with the License. You can
> obtain a copy of the License at
> https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
> or packager/legal/LICENSE.txt. See the License for the specific
> language governing permissions and limitations under the License.
>
> When distributing the software, include this License Header Notice in each
> file and include the License file at packager/legal/LICENSE.txt.
>
> GPL Classpath Exception:
> Oracle designates this particular file as subject to the "Classpath"
> exception as provided by Oracle in the GPL Version 2 section of the License
> file that accompanied this code.
>
> Modifications:
> If applicable, add the following below the License Header, with the fields
> enclosed by brackets [] replaced by your own identifying information:
> "Portions Copyright [year] [name of copyright owner]"
>
> Contributor(s):
> If you wish your version of this file to be governed by only the CDDL or
> only the GPL Version 2, indicate your decision by adding "[Contributor]
> elects to include this software in this distribution under the [CDDL or GPL
> Version 2] license." If you don't indicate a single choice of license, a
> recipient has the option to distribute your version of this file under
> either the CDDL, the GPL Version 2 or to extend the choice of license to
> its licensees as provided above. However, if you add GPL Version 2 code
> and therefore, elected the GPL Version 2 license, then the option applies
> only if the new code is made subject to such option by the copyright
> holder.
>
> -->
>
> <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.glassfish.main</groupId>
> <artifactId>glassfish-nucleus-parent</artifactId>
> <version>4.0-SNAPSHOT</version>
> </parent>
>
> <artifactId>glassfish-obr-builder</artifactId>
> <version>4.0-SNAPSHOT</version>
> <name>Builds OBR from a set of OSGi bundles</name>
> <packaging>bundle</packaging>
>
> <dependencies>
> <dependency>
> <groupId>org.osgi</groupId>
> <artifactId>org.osgi.core</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>org.osgi</groupId>
> <artifactId>org.osgi.compendium</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>org.apache.felix</groupId>
> <artifactId>org.apache.felix.bundlerepository</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>javax.ws.rs</groupId>
> <artifactId>javax.ws.rs-api</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>org.glassfish.jersey.core</groupId>
> <artifactId>jersey-server</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>org.glassfish.jersey.containers</groupId>
> <artifactId>jersey-container-grizzly2-http</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>org.glassfish.jersey.containers</groupId>
> <artifactId>jersey-container-servlet-core</artifactId>
> <scope>provided</scope>
> </dependency>
> <dependency>
> <groupId>javax.servlet</groupId>
> <artifactId>javax.servlet-api</artifactId>
> <scope>provided</scope>
> </dependency>
> </dependencies>
>
> <build>
> <plugins>
> <!-- Configure maven-bundle-plugin to generate OSGi manifest. Please note:
> we use the manifest goal only and not the bundle goal. The bundle goal can
> lead to very surprising results if the package names are not correctly specified.
> So, we use the jar plugin to generate the jar. -->
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-bundle-plugin</artifactId>
> <extensions>true</extensions>
> <configuration>
> <!-- By default, we don't export anything. -->
> <Export-Package />
> <!-- Since, we are in a top level pom and we we don't want it to be
> active for plain jar type artifacts, enable the plugin for hk2-jar and bundle
> packaging type only, -->
> <supportedProjectTypes>
> <supportedProjectType>glassfish-jar</supportedProjectType>
> <supportedProjectType>bundle</supportedProjectType>
> <supportedProjectType>jar</supportedProjectType>
> </supportedProjectTypes>
> <instructions>
> <!-- Read all the configuration from osgi.bundle file, if it exists.
> See Felix-699 to find out why we use ${basedir}. -->
> <_include>-${basedir}/osgi.bundle</_include>
> </instructions>
> </configuration>
> <executions>
> <execution>
> <id>bundle-manifest</id>
> <phase>process-classes</phase>
> <goals>
> <goal>manifest</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> </plugins>
> </build>
>
> </project>

-- 
−−−−−−−−−−−−−−−−−−−−−−
Tang Yong
Senior Engineer
Glassfish Team Developer(OSGi&OSGi-JavaEE)
OSGi Alliance Supporter
Blog: http://osgizone.typepad.com/tangyong/
Nanjing Fujitsu NanDa Software Tec CO.,LTD
http://www.fujitsu.com/cn/fnst
Tel: +86-25-86630566-8310
Fax: +86-25-83317685              
−−−−−−−−−−−−−−−−−−−−−−