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]

Reply via email to