Hello. I'm converting a project from an Ant build system to one that uses Maven instead. The Ant task that created the jar file for the project defined Section elements in the produced jar:
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Specification-Title" value="XOM"/>
<attribute name="Specification-Version" value="${version}"/>
<attribute name="Specification-Vendor" value="Elliotte Rusty Harold"/>
<attribute name="Implementation-Title" value="XOM"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Implementation-Vendor" value="Elliotte Rusty
Harold"/>
<attribute name="Main-Class" value="nu.xom.Info"/>
<!-- OSGI Information -->
<attribute name="Manifest-Version" value="1.0"/>
<attribute name="Bundle-ManifestVersion" value="2"/>
<attribute name="Bundle-Name" value="${Name}"/>
<attribute name="Bundle-SymbolicName" value="nu.xom"/>
<attribute name="Bundle-Version" value="${bundleversion}"/>
<attribute name="Bundle-Vendor" value="xom.nu"/>
<attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.2"/>
<attribute name="Export-Package" value="nu.xom, nu.xom.canonical,
nu.xom.converters, nu.xom.xinclude, nu.xom.xslt"/>
<attribute name="Import-Package" value='javax.xml.transform.sax,
javax.xml.transform, org.w3c.dom, org.xml.sax, org.xml.sax.helpers,
org.xml.sax.ext,
org.apache.xerces.parsers;resolution:=optional;version="2.8.0",
org.apache.xerces.impl;resolution:=optional;version="2.8.0",
org.apache.xerces.jaxp;resolution:=optional;version="2.9.0",
junit.framework;resolution:=optional;version="3.8.1",
com.sun.org.apache.xerces.internal.jaxp;resolution:=optional,
com.sun.org.apache.xerces.internal.parsers;resolution:=optional'/>
<section name="nu/xom/">
<attribute name="Sealed" value="true"/>
<attribute name="Specification-Title" value="XOM core classes"/>
<attribute name="Implementation-Title" value="nu.xom"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Implementation-Vendor" value="Elliotte Rusty
Harold"/>
</section>
<section name="nu/xom/xslt/">
<attribute name="Sealed" value="true"/>
<attribute name="Specification-Title" value="XOM XSLT interface"/>
<attribute name="Implementation-Title" value="nu.xom.xslt"/>
</section>
<section name="nu/xom/xinclude/">
<attribute name="Sealed" value="true"/>
<attribute name="Specification-Title" value="XOM XInclude engine"/>
<attribute name="Implementation-Title" value="nu.xom.xinclude"/>
</section>
<section name="nu/xom/converters/">
<attribute name="Sealed" value="true"/>
<attribute name="Specification-Title" value="XOM converters to
other object models"/>
<attribute name="Implementation-Title" value="nu.xom.converters"/>
</section>
<section name="nu/xom/canonical/">
<attribute name="Sealed" value="true"/>
<attribute name="Specification-Title" value="XOM Canonical XML
support"/>
<attribute name="Implementation-Title" value="nu.xom.canonical"/>
</section>
</manifest>
I'm trying to use the maven-bundle-plugin to produce an OSGi bundle as the
primary
artifact, but want to keep those added sections above for compatibility reasons.
The following configuration doesn't seem to work, however:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Vendor>xom.nu</Bundle-Vendor>
<Bundle-RequiredExecutionEnvironment>J2SE-1.2</Bundle-RequiredExecutionEnvironment>
<Specification-Title>XOM</Specification-Title>
<Specification-Version>${project.version}</Specification-Version>
<Specification-Vendor>Elliotte Rusty Harold</Specification-Vendor>
<Implementation-Title>XOM</Implementation-Title>
<Implementation-Version>${project.version}</Implementation-Version>
<Implementation-Vendor>Elliotte Rusty Harold</Implementation-Vendor>
<Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
<Main-Class>nu.xom.Info</Main-Class>
<Section name="nu/xom/">
<Sealed>true</Sealed>
<Specification-Title>XOM</Specification-Title>
<Implementation-Title>nu.xom</Implementation-Title>
<Implementation-Version>${project.version}</Implementation-Version>
<Implementation-Vendor>Elliotte Rusty
Harold</Implementation-Vendor>
</Section>
<Section name="nu/xom/xslt">
<Sealed>true</Sealed>
<Specification-Title>XOM XSLT interface</Specification-Title>
<Implementation-Title>nu.xom.xslt</Implementation-Title>
</Section>
<Section name="nu/xom/xinclude">
<Sealed>true</Sealed>
<Specification-Title>XOM XInclude engine</Specification-Title>
<Implementation-Title>nu.xom.xinclude</Implementation-Title>
</Section>
<Section name="nu/xom/converters">
<Sealed>true</Sealed>
<Specification-Title>XOM converters to other object
models</Specification-Title>
<Implementation-Title>nu.xom.converters</Implementation-Title>
</Section>
<Section name="nu/xom/canonical">
<Sealed>true</Sealed>
<Specification-Title>XOM Canonical XML
support</Specification-Title>
<Implementation-Title>nu.xom.canonical</Implementation-Title>
</Section>
<Import-Package>
com.sun.org.apache.xerces.internal.jaxp;
resolution:="optional",
com.sun.org.apache.xerces.internal.parsers;
resolution:="optional",
javax.swing; resolution:="optional",
javax.swing.tree; resolution:="optional",
*
</Import-Package>
<Export-Package>
nu.xom,
nu.xom.canonical,
nu.xom.converters,
nu.xom.xinclude,
nu.xom.xslt
</Export-Package>
</instructions>
</configuration>
</plugin>
The top-level Specification-Title, Specification-Version, etc elements do
appear in the
manifest of the produced bundle, but the Section elements are quietly ignored.
Is
there another way to achieve what I want?
M
pgpqYfyHD9YyI.pgp
Description: OpenPGP digital signature

