Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Component

Last Release

First OSGi release

Notes / Comments

attributes

2.2

 

No m2 build

beanutils

1.8.0-BETA

 

 

betwixt

0.8

 

 

chain

1.1

 

 

cli

1.1

 

 

codec

1.3

 

 

collections

3.2

 

 

configuration

1.5

 

 

daemon

1.0.1

 

 

dbcp

1.2.2

 

 

dbutils

1.1

 

 

digester

1.8

 

 

discovery

0.4

 

 

el

1.0

 

 

email

1.1

 

 

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1abbe3cd567b9394-a0a2ae07-4b444fbb-b41f9397-25e6bb37996856ce2575dd3b"><ac:plain-text-body><![CDATA[

fileupload

1.2

1.2.1 m2,manual,pending

[http://felix.markmail.org/message/tgm45au3rpmpmfnf javax.portlet]

]]></ac:plain-text-body></ac:structured-macro>

io

1.3.2

1.4 (m2,manual)

 

jci

1.0

 

 

jelly

1.0

 

No m2 build

jexl

1.1

 

 

jxpath

1.2

 

 

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ec62c61fbd703fd7-dda3abf3-425d4d18-a54cb514-12467b7c263fdab2bbc00f1e"><ac:plain-text-body><![CDATA[

lang

2.3

 

Lang 2.4 looks imminent, see [https://issues.apache.org/jira/browse/LANG-402 LANG-402]

]]></ac:plain-text-body></ac:structured-macro>

launcher

1.1

 

 

logging

1.1.1

 

OSGi is N/A; See Below

math

1.1

 

 

modeler

2.0.1

 

 

net

1.4.1

 

 

pool

1.3

1.4 (m1, manual)

 

primitives

1.0

 

 

proxy

No yet released

 

 

scxml

0.7

 

 

transaction

1.2

 

 

validator

1.3.1

 

 

vfs

1.0

 

 

...

  • <extensions>true</extensions> needs to be specified otherwise the
    No Format
     <packaging>bundle</packaging> 
    is not recognized and causes an error with the message Cannot find lifecycle mapping for packaging 'bundle*_
  • <excludeDependencies>true</excludeDependencies> prevents all the component's dependencies classes being included in the jar
  • Other_* Manifest_* _ entries are inherited from the commons-parent pom
  • Depending on the nature/structure of the project, some packages might contain private classes that are not meant to be used by client code. In these cases, <Export-Package> should list all public packages while <Private-Package> should contain the private packages.

Configuring via the jar plugin

No Format
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestEntries>
              <Bundle-SymbolicName>org.apache.commons.lang</Bundle-SymbolicName>
              <Bundle-License>http://www.apache.org/licenses/LICENSE-2.0.txt</Bundle-License>
              <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
              <Bundle-Name>Apache Commons Lang Bundle</Bundle-Name>
              <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
              <Bundle-Version>${project.version}</Bundle-Version>
              <Export-Package>
org.apache.commons.lang;version=${project.version},
org.apache.commons.lang.builder;version=${project.version},
org.apache.commons.lang.enum;version=${project.version},
org.apache.commons.lang.enums;version=${project.version},
org.apache.commons.lang.exception;version=${project.version},
org.apache.commons.lang.math;version=${project.version},
org.apache.commons.lang.mutable;version=${project.version},
org.apache.commons.lang.text;version=${project.version},
org.apache.commons.lang.time;version=${project.version}
              </Export-Package>
              <Import-Package>
org.apache.commons.lang;version=${project.version},
org.apache.commons.lang.builder;version=${project.version},
org.apache.commons.lang.enum;version=${project.version},
org.apache.commons.lang.enums;version=${project.version},
org.apache.commons.lang.exception;version=${project.version},
org.apache.commons.lang.math;version=${project.version},
org.apache.commons.lang.mutable;version=${project.version},
org.apache.commons.lang.text;version=${project.version},
org.apache.commons.lang.time;version=${project.version}
              </Import-Package>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>

*Notes:_'

  • As you can see by the example, you should always import everything you export.
  • The note about private packages from above applies here of course as well.