The attached patch to the plugin.jelly script for the maven-jar-plugin will allow you to add arbitrary values to the manifest--complete with sections which will make the sealing of classes/packages possible. The new values are added like this:
maven.jar.manifest.attributes.list = GUIApp-Conf,GUIApp-Instrument,GUIApp-Log
maven.jar.manifest.attribute.GUIApp-Conf = org/d_haven/demoapp/DemoApp.xconf
maven.jar.manifest.attribute.GUIApp-Instrument = org/d_haven/demoapp/DemoApp.instruments
maven.jar.manifest.attribute.GUIApp-Log = org/d_haven/demoapp/DemoApp.xlog
maven.jar.manifest.groups.list = DemoAppConstants,ValidateQuitApplication maven.jar.manifest.DemoAppConstants.name=org/d_haven/demoapp/DemoAppConstants.class maven.jar.manifest.DemoAppConstants.attributes.list=Description,Foo maven.jar.manifest.DemoAppConstants.attribute.Description=It's ok maven.jar.manifest.DemoAppConstants.attribute.Foo=bar
maven.jar.manifest.ValidateQuitApplication.name=org/d_haven/demoapp/screens/ValidateQuitApplication.class maven.jar.manifest.ValidateQuitApplication.attributes.list=Description maven.jar.manifest.ValidateQuitApplication.attribute.Description=We are rockin'
This will add to the Maven generated Manifest like this:
.... skip maven generated content .... GUIApp-Conf: org/d_haven/demoapp/DemoApp.xconf GUIApp-Instrument: org/d_haven/demoapp/DemoApp.instruments GUIApp-Log: org/d_haven/demoapp/DemoApp.xlog
Name: org/d_haven/demoapp/DemoAppConstants.class Description: It's ok Foo: bar
Name: org/d_haven/demoapp/screens/ValidateQuitApplication.class Description: We are rockin'
Please note that all the existing functionality has been preserved. We are only adding the ability to add sections and attributes of our own design. I personally don't like having to specify these things in property format, but I don't know much about extending the POM so I can't propose a nicer format. Anyway, this makes it easy for plugins to add new attributes, etc.
--- plugin.jelly.old 2003-07-14 17:36:46.000000000 -0400 +++ plugin.jelly 2003-09-04 16:44:33.000000000 -0400 @@ -9,7 +9,8 @@ xmlns:resources="resources" xmlns:util="jelly:util" xmlns:doc="doc" - xmlns:m="maven"> + xmlns:m="maven" + xmlns:log="jelly:log"> <!-- ================================================================== --> <!-- J A R --> @@ -71,7 +72,6 @@ <ant:attribute name="Extension-List" value="${extensionList}"/> </j:if> - <j:forEach var="artifact" items="${pom.artifacts}"> <j:set var="dep" value="${artifact.dependency}"/> <ant:attribute name="${dep.artifactId}-Extension-Name" value="${dep.artifactId}"/> @@ -79,6 +79,36 @@ <ant:attribute name="${dep.artifactId}-Implementation-URL" value="http://www.ibiblio.org/maven${artifact.urlPath}"/> </j:forEach> </j:if> + + <j:if test="${context.getVariable('maven.jar.manifest.attributes.list') != null}"> + <util:tokenize var="attributeList" delim="," trim="true">${maven.jar.manifest.attributes.list}</util:tokenize> + <j:forEach var="attribute" items="${attributeList}"> + <j:set var="name" value="maven.jar.manifest.attribute.${attribute}"/> + <j:set var="value" value="${context.findVariable(name)}"/> + <log:debug>[user attribute] ${attribute}: ${value}</log:debug> + <ant:attribute name="${attribute}" value="${value}"/> + </j:forEach> + </j:if> + + <j:if test="${context.getVariable('maven.jar.manifest.groups.list') != null}"> + <util:tokenize var="groupList" delim="," trim="true">${maven.jar.manifest.groups.list}</util:tokenize> + <j:forEach var="group" items="${groupList}"> + <j:set var="nameVar" value="maven.jar.manifest.${group}.name"/> + <j:set var="groupName" value="${context.findVariable(nameVar)}"/> + <j:set var="attributeListVar" value="maven.jar.manifest.${group}.attributes.list"/> + <j:set var="groupAttributes" value="${context.findVariable(attributeListVar)}"/> + <util:tokenize var="attributeList" delim="," trim="true">${groupAttributes}</util:tokenize> + <log:debug>[group] Name: ${groupName}</log:debug> + <ant:section name="${groupName}"> + <j:forEach var="attribute" items="${attributeList}"> + <j:set var="name" value="maven.jar.manifest.${group}.attribute.${attribute}"/> + <j:set var="value" value="${context.findVariable(name)}"/> + <log:debug>[attribute] ${attribute}: ${value}</log:debug> + <ant:attribute name="${attribute}" value="${value}"/> + </j:forEach> + </ant:section> + </j:forEach> + </j:if> </ant:manifest> </ant:jar> </goal>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]