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 2008/07/16 18:36:32 UTC

[jira] Commented: (FELIX-636) Bundle-SymbolicName is generated incorrectly

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

Stuart McCulloch commented on FELIX-636:
----------------------------------------

This is working as designed - by default we use the Maven2OsgiConverter provided by the Maven team to convert the groupId and artifactId combination to a unique Bundle-SymbolicName, and only fall back to use "groupId.artifactId" as a last resort. This gives us the best compatibility with other Maven plugins that use the same (shared) component:

   http://svn.apache.org/repos/asf/maven/shared/tags/maven-osgi-0.2.0/src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java

The Maven2OsgiConverter component uses the following algorithm to compute the symbolic name:

    /**
     * Get the symbolic name as groupId + "." + artifactId, with the following exceptions
     * <ul>
     * <li>if artifact.getFile is not null and the jar contains a OSGi Manifest with
     * Bundle-SymbolicName property then that value is returned</li>
     * <li>if groupId has only one section (no dots) and artifact.getFile is not null then the
     * first package name with classes is returned. eg. commons-logging:commons-logging ->
     * org.apache.commons.logging</li>
     * <li>if artifactId is equal to last section of groupId then groupId is returned. eg.
     * org.apache.maven:maven -> org.apache.maven</li>
     * <li>if artifactId starts with last section of groupId that portion is removed. eg.
     * org.apache.maven:maven-core -> org.apache.maven.core</li>
     * </ul>
     */

If you want to force the bundleplugin to always use "groupId.artifactId" as the symbolic name then just use:

      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>1.4.1</version>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
            <!-- etc... -->
          </instructions>
        </configuration>
      </plugin>

and this will override the default setting.

> Bundle-SymbolicName is generated incorrectly
> --------------------------------------------
>
>                 Key: FELIX-636
>                 URL: https://issues.apache.org/jira/browse/FELIX-636
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-1.4.1
>         Environment: Ubuntu
>            Reporter: Ken Paulsen
>         Attachments: pom.xml
>
>
> I have the following in the pom.xml:
>   <groupId>org.glassfish.jsftemplating</groupId>
>   <artifactId>jsftemplating</artifactId>
> After I build, I get the following in the MANIFEST.MF:
>    Bundle-SymbolicName: org.glassfish.jsftemplating
> Notice it only has 1 "jsftemplating" in the symbolic name.  If I change the artifactId to something else and make no other changes, I get the expected results.  For example, if I put this in the pom.xml:
>   <groupId>org.glassfish.jsftemplating</groupId>
>   <artifactId>jsft</artifactId>
> I get this in the MANIFEST.MF:
>    Bundle-SymbolicName: org.glassfish.jsftemplating.jsft
> Notice now both the full groupId AND artifact id appear in the symbolic name.  This is what I expected to see. 

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