Thanks for the pointers, I have decided to move the code to a pure eclipse PDE project and then use tycho in maven3 to convert that project into a maven project. I think its possible to do it the other way around but since I want the app to be in the form of OSGI bundles this approach seems more natural.
On Tue, Jul 20, 2010 at 6:09 PM, Justin Edelson <[email protected]> wrote: > In this context, the OSGi container is Eclipse/Equinox, so you just need to > install the peaberry bundles. The peaberry docs should explain how to do > this. > > The entire concept of a fat or uber jar is anathema to OSGi IMHO. > > You might also want to look at Tycho which seems closer to your use case. > But I don't do Eclipse development, so I can't say more than that. > > Justin > > On Tue, Jul 20, 2010 at 11:20 AM, motes motes <[email protected]> wrote: > >> Thanks for clarifying! >> >> Maybe its appropriate to write a few words on what I am trying to do. >> I have made a fairly large offline application which use the eclipse >> birt runtime library. I want this application to work as an eclipse >> plugin (PDE) which can be installed into eclipse using eg the P2 >> updater. Its not meant to run outside eclipse. >> >> My first approach was to use maven to build a fat jar with the >> assembly plugin and then convert this fatjar into a plugin using the >> "Plugin from existing jar archieve" from eclipse. Finally this plugin >> was added as a dependency in a "pure" eclipse plugin project which >> could then be exported using the wizard and installed in eclipse. >> >> But I would like to skip the step of building the fatjar and manually >> converting it into a bundle. Instead I would like to use the >> maven-bundle-plugin to do this automatically from maven. >> >> But as I understand your mail this requires setting up an OSGI >> container, loading the necessary bundles and then starting the "main" >> bundle. >> >> I have looked into: >> >> >> http://www.sonatype.com/books/mcookbook/reference/osgi-sect-starting-osgi-container.html >> >> http://www.sonatype.com/books/mcookbook/reference/sect-osgi-generate-project.html >> http://www.ops4j.org/projects/pax/construct/maven-pax-plugin/ >> >> which shows how to create a maven bundle project and start the Felix >> osgi container. But I am a bit confused if this is the right way to go >> based on the above described objective (the final application should >> be an eclipse only plugin). Any suggestions? >> >> >> >> >> >> >> >> >> On Tue, Jul 20, 2010 at 4:18 PM, Justin Edelson >> <[email protected]> wrote: >> > I answered a similar question a few days ago: >> > http://markmail.org/message/e6zor7dgzyf4ykka >> > >> > <http://markmail.org/message/e6zor7dgzyf4ykka>In short, you appear to be >> > conflating Maven dependencies (expressed in the pom, used at compile/test >> > time) with OSGi dependencies (expressed in the manifest, used at >> runtime). >> > >> > In order to use peaberry, you need to deploy the peaberry bundles into >> your >> > OSGi container. In the peaberry-1.1.1 download, these are: >> > aopalliance-1.0.jar >> > guice-customloader-20090412.jar >> > peaberry-1.1.1.jar >> > >> > That you are seeing a missing import for an internal class suggests to me >> > you're still using Embed-Dependencies, which isn't necessary (or a good >> > idea) in this case. >> > >> > Justin >> > >> > On Tue, Jul 20, 2010 at 9:32 AM, motes motes <[email protected]> >> wrote: >> > >> >> I have now changed my project to depend on: >> >> >> >> org.ops4j : peaberry : 1.1.1 : jar >> >> >> >> instead of guice-2.0 which should be the OSGI version of guice. But I >> >> still get the error: >> >> >> >> Missing Constraint: Import-Package: >> >> com.google.inject.internal.asm.util; version="0.0.0" >> >> >> >> when I try to start the bundle from the OSGI commandline. Has anyone >> >> had any success using the maven-bundle-plugin with a project that use >> >> guice or peaberry? >> >> >> >> >> >> >> >> >> >> On Tue, Jul 20, 2010 at 2:58 PM, motes motes <[email protected]> >> wrote: >> >> > If I do: >> >> > >> >> > >> <Import-Package>!com.google.inject.internal.asm.util,*</Import-Package> >> >> > >> >> > I just get a similar error for another package: >> >> > >> >> > Missing Constraint: Import-Package: javax.jms; >> >> > >> >> > so yes its best to track it down I guess. But I thought that >> >> > >> >> > <Embed-Transitive>true</Embed-Transitive> >> >> > >> <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> >> >> > >> >> > would take care of transitive dependencies? >> >> > >> >> > >> >> > >> >> > On Tue, Jul 20, 2010 at 2:44 PM, Justin Edelson < >> [email protected]> >> >> wrote: >> >> >> You can suppress this import by adding >> >> <Import-Package>!com.google.inject.internal.asm.util,*</Import-Package> >> >> >> >> >> >> But this import looks important, so you are probably better off >> tracking >> >> it down. >> >> >> >> >> >> Also, isn't there an OSGi-ified version of Guice you can use instead >> of >> >> embedding it? >> >> >> >> >> >> On Jul 20, 2010, at 8:34 AM, motes motes <[email protected]> >> wrote: >> >> >> >> >> >>> I am trying to build my maven project into a bundle using the >> >> >>> maven-bundle-plugin with all its dependencies (it depends on >> >> >>> guice-2.0.jar). In my pom file I have: >> >> >>> >> >> >>> <build> >> >> >>> <plugins> >> >> >>> <plugin> >> >> >>> <groupId>org.apache.felix</groupId> >> >> >>> <artifactId>maven-bundle-plugin</artifactId> >> >> >>> <version>2.1.0</version> >> >> >>> <extensions>true</extensions> >> >> >>> <configuration> >> >> >>> <instructions> >> >> >>> >> >> >>> >> >> >> <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName> >> >> >>> <Bundle-Name>${pom.name}</Bundle-Name> >> >> >>> <Bundle-Version>${pom.version}</Bundle-Version> >> >> >>> >> >> <Bundle-Activator>com.generator.Activator</Bundle-Activator> >> >> >>> <Private-Package>com.generator</Private-Package> >> >> >>> <Embed-Transitive>true</Embed-Transitive> >> >> >>> >> >> <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> >> >> >>> </instructions> >> >> >>> </configuration> >> >> >>> </plugin> >> >> >>> </plugins> >> >> >>> </build> >> >> >>> >> >> >>> After building the project using mvn install I get a jar file with >> all >> >> >>> the dependencies. I then try to run it through the OSGI console >> after >> >> >>> installing it but I get the error: >> >> >>> >> >> >>> osgi> start 15 >> >> >>> org.osgi.framework.BundleException: The bundle >> >> >>> "com.generator_1.1.1.SNAPSHOT [15]" could not be resolved. Reason: >> >> >>> Missing Constraint: Import-Package: >> >> >>> com.google.inject.internal.asm.util; version="0.0.0" >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1317) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1301) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:319) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:276) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:252) >> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method) >> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown >> Source) >> >> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown >> >> Source) >> >> >>> at java.lang.reflect.Method.invoke(Unknown Source) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:155) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:156) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:141) >> >> >>> at >> >> >> org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:105) >> >> >>> at java.lang.Thread.run(Unknown Source) >> >> >>> >> >> >>> osgi> >> >> >>> >> >> >>> The problem seems to be related to the >> >> >>> com.google.inject.internal.asm.util package but I have not been able >> >> >>> to find that package anywhere (not even in guice-2.0.jar). Any >> ideas >> >> >>> on how to solve this problem? >> >> >>> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> To unsubscribe, e-mail: [email protected] >> >> >>> For additional commands, e-mail: [email protected] >> >> >>> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: [email protected] >> >> >> For additional commands, e-mail: [email protected] >> >> >> >> >> >> >> >> > >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [email protected] >> >> For additional commands, e-mail: [email protected] >> >> >> >> >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

