[Neo] Neo4j bundle packaging

Peter Neubauer neubauer.peter at gmail.com
Mon Sep 28 21:06:55 CEST 2009


Andreas,
just committed that fix in order to get the packaging right. However,
there is a deeper inconsistency in the naming of components vs. their
package names, that I think we need to fix in the long run ...

/peter

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org                - Relationships count.
http://www.oredev.se               - The best thing since the wall came down.
http://www.linkedprocess.org   - Distributed computing on LinkedData scale



On Tue, Sep 22, 2009 at 1:14 AM, Andreas Kollegger
<akollegger at tembopublic.org> wrote:
> Looking at neo-utils, I don't see any embedded dependencies in the
> neo-utils jar. The manifest would have entries like "Include-Resource"
> or "Bundle-Classpath" and there'd be jars within the jar.
>
> Oh, wait. I think I see the problem. neo-utils depends on index-util
> which produce classes in overlapping package name spaces. Ah. Yes, that
> effectively is embedding dependencies, except that the culprit
> is actually a problem with the Export-Package. The parent has this:
>
> <Export-Package>!${bundle.namespace}.internal.*,$
> {bundle.namespace}.*;version="${pom.version}"</Export-Package>
>
> Which for neo-utils means any available class in the org.neo4j.util.*
> packages
> except for org.neo4j.util.internal classes will be included in the jar.
>
> So, we need a local osgi.bnd file to specifically exclude the non neo-
> utils
> package namespaces. This should do it:
>
> Export-Package: !org.neo4j.util.internal.*,!org.neo4j.util.index,!
> org.neo4j.util.map,!org.neo4j.util.timeline,!org.neo4j.util.btree,!
> org.neo4j.util.sortedtree,org.neo4j.util.*;version="${pom.version}"
>
> I'm sorry. I remember coming across this early on, and was sure that I'd
> taken care of it when committing the bundle stuff. This is my fault.
>
> As for things like JTA: I don't think we should embed that in core
> unless we also produce a version without it embedded. We should be
> able to do that with an assembly. My own project is atypical, I know,
> but I actually deploy multiple persistence technologies (jpa, db4o,
> neo4j), in a best tool for the job approach. Having multiple JTAs
> in different bundles would be awkward to overcome.
>
> Alternatively, we could start a neo-commons (or neo-deps?) multi-module
> project with modules that wrap any required third party stuff to keep
> it all in the family, while maintaining maximum flexibility when
> provisioning a runtime.
>
> Thoughts? Preferences?
>
> -Andreas
>
>
> On Sep 21, 2009, at 5:18 PM, Peter Neubauer wrote:
>
>> Hi Andreas,
>> basically getting rid of unwanted includes is the case. I am thinking
>> the master pom addition would clear things up and exclude deps in an
>> obvious way. via the bnd files we can then fine tune e.g. exports in
>> case that is necessary. WDYT?
>>
>> Then, we could e.g. explicitely state the JTA jar as scope "runtime"
>> to make it clear it wil be packaged with the core bundle ...
>>
>> /peter
>>
>> GTalk:      neubauer.peter
>> Skype       peter.neubauer
>> Phone       +46 704 106975
>> LinkedIn   http://www.linkedin.com/in/neubauer
>> Twitter      http://twitter.com/peterneubauer
>>
>> http://www.neo4j.org                - Relationships count.
>> http://www.oredev.se               - The best thing since the wall
>> came down.
>> http://www.linkedprocess.org   - Distributed computing on LinkedData
>> scale
>>
>>
>>
>> On Mon, Sep 21, 2009 at 10:51 PM, Andreas Kollegger
>> <akollegger at tembopublic.org> wrote:
>>> Hey, just catching up on this thread.
>>>
>>> Adding an explicit provided scope to dependencies seems fine to me.
>>> I'm not sure about adding Embed-Dependency to the parent pom, though.
>>>
>>> Without an explicit Embed-Dependency instruction, I wouldn't expect
>>> anything other than compiled source to be in the final jar. Are you
>>> saying that was happening? Or that you want dependencies embedded?
>>>
>>> If the latter, then the component which wants different behavior
>>> from the bundle plugin can create a filed named osgi.bnd in the same
>>> directory as it's pom. Any instructions in there will override the
>>> instructions in the plugin configuration.
>>>
>>> So, is it getting rid of unwanted dependencies that are being
>>> included,
>>> or adding in dependencies that are wanted?
>>>
>>> -Andreas
>>>
>>>
>>> On Sep 21, 2009, at 4:27 PM, Peter Neubauer wrote:
>>>
>>>> Yeah, I guess I can do it, but need the rights first,
>>>> alternatively I
>>>> can send you a patch that includes all the updates in the different
>>>> poms (basically just adding the right scope elements). Can work on
>>>> it
>>>> more tomorrow.
>>>>
>>>> /peter
>>>>
>>>> GTalk:      neubauer.peter
>>>> Skype       peter.neubauer
>>>> Phone       +46 704 106975
>>>> LinkedIn   http://www.linkedin.com/in/neubauer
>>>> Twitter      http://twitter.com/peterneubauer
>>>>
>>>> http://www.neo4j.org                - Relationships count.
>>>> http://www.oredev.se               - The best thing since the wall
>>>> came down.
>>>> http://www.linkedprocess.org   - Distributed computing on LinkedData
>>>> scale
>>>>
>>>>
>>>>
>>>> On Mon, Sep 21, 2009 at 10:25 PM, Mattias Persson
>>>> <mattias at neotechnology.com> wrote:
>>>>> Oh, ok... I'd vote for someone with a little more OSGi knowledge
>>>>> though, who could test it a bit before committing it. But I guess I
>>>>> _could_ do it.
>>>>>
>>>>> 2009/9/21 Peter Neubauer <neubauer.peter at gmail.com>:
>>>>>> Well, I figure you have to commit the patch, since I don't have
>>>>>> sufficient privileges for the master pom ...
>>>>>>
>>>>>> /peter
>>>>>>
>>>>>> GTalk:      neubauer.peter
>>>>>> Skype       peter.neubauer
>>>>>> Phone       +46 704 106975
>>>>>> LinkedIn   http://www.linkedin.com/in/neubauer
>>>>>> Twitter      http://twitter.com/peterneubauer
>>>>>>
>>>>>> http://www.neo4j.org                - Relationships count.
>>>>>> http://www.oredev.se               - The best thing since the wall
>>>>>> came down.
>>>>>> http://www.linkedprocess.org   - Distributed computing on
>>>>>> LinkedData scale
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Sep 21, 2009 at 10:15 PM, Mattias Persson
>>>>>> <mattias at neotechnology.com> wrote:
>>>>>>> Bump.
>>>>>>>
>>>>>>> Any progress here anyone? It should be dealt with rather soon do
>>>>>>> prevent strange behaviour and confusion.
>>>>>>>
>>>>>>> 2009/9/20 Peter Neubauer <peter.neubauer at jayway.se>:
>>>>>>>> Hi folks,
>>>>>>>> Mattias noted packaging problem where dependencies got embedded
>>>>>>>> into
>>>>>>>> e.g. the neo-utils final jar. I propose changing the master
>>>>>>>> pom so
>>>>>>>> that we will explicitely scope all dependencies and only deps
>>>>>>>> with
>>>>>>>> scope "runtime" or "compile" get embedded and not imported into
>>>>>>>> the
>>>>>>>> final bundles, something along the lines of
>>>>>>>>
>>>>>>>> Index: neo-utils/trunk/pom.xml
>>>>>>>> =
>>>>>>>> =
>>>>>>>> =
>>>>>>>> ================================================================
>>>>>>>> --- neo-utils/trunk/pom.xml     (revision 3108)
>>>>>>>> +++ neo-utils/trunk/pom.xml     (working copy)
>>>>>>>> @@ -63,16 +63,19 @@
>>>>>>>>       <groupId>org.neo4j</groupId>
>>>>>>>>       <artifactId>neo</artifactId>
>>>>>>>>       <version>1.0-b10-SNAPSHOT</version>
>>>>>>>> +      <scope>provided</scope>
>>>>>>>>     </dependency>
>>>>>>>>     <dependency>
>>>>>>>>       <groupId>org.neo4j</groupId>
>>>>>>>>       <artifactId>neo-component-commons</artifactId>
>>>>>>>>       <version>0.3-SNAPSHOT</version>
>>>>>>>> +      <scope>provided</scope>
>>>>>>>>     </dependency>
>>>>>>>>     <dependency>
>>>>>>>>       <groupId>org.neo4j</groupId>
>>>>>>>>       <artifactId>index-util</artifactId>
>>>>>>>>       <version>0.8-SNAPSHOT</version>
>>>>>>>> +      <scope>provided</scope>
>>>>>>>>     </dependency>
>>>>>>>>   </dependencies>
>>>>>>>>  </project>
>>>>>>>> Index: pom.xml
>>>>>>>> =
>>>>>>>> =
>>>>>>>> =
>>>>>>>> ================================================================
>>>>>>>> --- pom.xml     (revision 3108)
>>>>>>>> +++ pom.xml     (working copy)
>>>>>>>> @@ -119,6 +119,7 @@
>>>>>>>>             <Bundle-Version>${pom.version}</Bundle-Version>
>>>>>>>>             <Export-Package>!${bundle.namespace}.internal.*,$
>>>>>>>> {bundle.namespace}.*;version="${pom.version}"</Export-Package>
>>>>>>>>             <Private-Package>${bundle.namespace}.internal.*</
>>>>>>>> Private-Package>
>>>>>>>> +                       <Embed-Dependency>*;scope=compile|
>>>>>>>> runtime</Embed-Dependency>
>>>>>>>>             <!-- Allow each bundle to override these settings by
>>>>>>>> creating a file named osgi.bnd
>>>>>>>>                  in the same directory as the component's
>>>>>>>> pom.xml.
>>>>>>>> See components/neo/trunk/osgi.bnd
>>>>>>>>                  for an example.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> WDYAT? Andreas, any thoughts?
>>>>>>>>
>>>>>>>> /peter
>>>>>>>>
>>>>>>>> GTalk:      neubauer.peter
>>>>>>>> Skype       peter.neubauer
>>>>>>>> Phone       +46 704 106975
>>>>>>>> LinkedIn   http://www.linkedin.com/in/neubauer
>>>>>>>> Twitter      http://twitter.com/peterneubauer
>>>>>>>>
>>>>>>>> http://www.neo4j.org                - Relations count.
>>>>>>>> http://www.oredev.se                - The best thing since the
>>>>>>>> wall came down.
>>>>>>>> http://www.linkedprocess.org   - Distributed computing on
>>>>>>>> LinkedData scale
>>>>>>>> _______________________________________________
>>>>>>>> Neo mailing list
>>>>>>>> User at lists.neo4j.org
>>>>>>>> https://lists.neo4j.org/mailman/listinfo/user
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Mattias Persson, [mattias at neotechnology.com]
>>>>>>> Neo Technology, www.neotechnology.com
>>>>>>> _______________________________________________
>>>>>>> Neo mailing list
>>>>>>> User at lists.neo4j.org
>>>>>>> https://lists.neo4j.org/mailman/listinfo/user
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Neo mailing list
>>>>>> User at lists.neo4j.org
>>>>>> https://lists.neo4j.org/mailman/listinfo/user
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Mattias Persson, [mattias at neotechnology.com]
>>>>> Neo Technology, www.neotechnology.com
>>>>> _______________________________________________
>>>>> Neo mailing list
>>>>> User at lists.neo4j.org
>>>>> https://lists.neo4j.org/mailman/listinfo/user
>>>>>
>>>> _______________________________________________
>>>> Neo mailing list
>>>> User at lists.neo4j.org
>>>> https://lists.neo4j.org/mailman/listinfo/user
>>>
>>> _______________________________________________
>>> Neo mailing list
>>> User at lists.neo4j.org
>>> https://lists.neo4j.org/mailman/listinfo/user
>>>
>> _______________________________________________
>> Neo mailing list
>> User at lists.neo4j.org
>> https://lists.neo4j.org/mailman/listinfo/user
>
> _______________________________________________
> Neo mailing list
> User at lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>


More information about the User mailing list