You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Stuart McCulloch (JIRA)" <ji...@apache.org> on 2009/02/23 05:16:01 UTC

[jira] Commented: (FELIX-954) Import-Package should include packages from optional Maven dependencies with resolution=optional

    [ https://issues.apache.org/jira/browse/FELIX-954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675757#action_12675757 ] 

Stuart McCulloch commented on FELIX-954:
----------------------------------------

This is a non-trivial feature that will probably require co-operation from the Bnd Tool, so it's unlikely to be in the next release (expected end of Feb).

We also have to be careful not to mark packages as optional when they are imported by both optional and non-optional dependencies, or when packages from optional dependencies are embedded inside the bundle (as embedded packages should then be considered as non-optional).

FYI, there are a number of existing options you can use to make your life easier when handling optional dependencies:

1)  when embedding dependencies you can exclude optional dependencies by using:

     <configuration>
       <instructions>
         <Embed-Dependency>*;optional=false</Embed-Dependency>
         <!-- etc. -->
       </instructions>
     </configuration>

2) with the 1.5.0-SNAPSHOT bundleplugin you can exclude optional dependencies from the classpath passed to the Bnd Tool:

     <configuration>
       <excludeDependencies>*;optional=true</excludeDependencies>
     </configuration>

both of which may reduce the number of imports when processing large graphs full of optional dependencies.

You can also take advantage of the wildcard support provided by the Bnd Tool, for example to mark all imports as optional:

     <configuration>
       <instructions>
         <Import-Package>*;resolution:=optional</Import-Package>
         <!-- etc. -->
       </instructions>
     </configuration>

and if you know that the packages from optional dependencies have a common prefix you can be a bit more specific:

     <configuration>
       <instructions>
         <Import-Package>
           javax.*;resolution:=optional,
           com.sun.*;resolution:=optional,
           *
         </Import-Package>
         <!-- etc. -->
       </instructions>
     </configuration>

Also when people talk about bundles with hundreds of imports that sounds like either they're trying to create a "mega-bundle" which contains (and exports) a large number of packages, or they have extremely tight coupling between their main bundle and their optional dependencies. Either way creating smaller bundles along with possibly some refactoring to reduce coupling should drastically reduce your number of imports.

> Import-Package should include packages from optional Maven dependencies with resolution=optional
> ------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-954
>                 URL: https://issues.apache.org/jira/browse/FELIX-954
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-1.4.3
>            Reporter: Pavol Juhos
>
> It would be great if maven-bundle-plugin used resolution=optional for packages that are coming from _optional_ Maven dependencies.
> The current behavior causes problems e.g. when embedding libraries with lots of optional dependencies. As described by Detelin Yordanov: "[I]t seems that BND finds the
> references to [the optional packages] and assumes them to be mandatory adding a bunch of imports in the manifest." This can easily result in hundreds of import-package declarations importing packages that are actually not required by the application. In these cases it is not practical to handle this manually in the plug-in / BND configuration.
> This issue was already discussed on felix-users list in Jan 2009 -- see thread "Maven bundle plugin: Is it possible to mark optional Maven dependencies to be imported with resolition=optional"
> http://mail-archives.apache.org/mod_mbox/felix-users/200901.mbox/%3C81f0d9c0901280604x6097dc19r8aa460673bfdad6@mail.gmail.com%3E

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.