Maven 1.x Jar Plugin

Manifest creation for dependency jars deployed in a sub-directory

Details

  • Type: Improvement Improvement
  • Status: Open Open
  • Priority: Minor Minor
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None
  • Environment:
    All OS, no special specs for this feature.
  • Number of attachments :
    1

Description

Library jars are not usually deployed in the same directory than the executable application file. Usually, libraries are deployed in subdirectories of the project root, even sometimes general library paths accessible by many applications.

The change I submit here uses a property you define at the project and that can be overriden for a sinble dependency.
The project property looks like this:
<properties>
<jar.dependency.dist.dir>lib</jar.dependency.dist.dir>
</properties>

The same entry is used in a dependency entry in project.xml.

The code change required in the plugin is this (CVS diff):

          • CVS exited normally with code 0 *****

cvs diff -r 1.1 -r 1.2 -wb -i plugin.jelly plugin.jelly (in directory C:\Work\cvs-nhc-maven\nhc-maven\maven-plugins\jar)
Index: plugin.jelly
===================================================================
RCS file: /home/cvs/cvsroot/nhc-maven/maven-plugins/jar/plugin.jelly,v
retrieving revision 1.1
retrieving revision 1.2
diff -w -b -i -r1.1 -r1.2
55a56,60
> <!-- Get the project level deployment sub-directory if it exists -->
> <j:if test="${pom.getProperty('jar.dependency.dist.dir')!=null}">
> <j:set var="projectDepDeployDir" value="${pom.getProperty('jar.dependency.dist.dir')}${'/'}"/>
> </j:if>
>
58c63,69
< <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${dep.artifact}" />

> <!-- Set default deploy sub-dir for dependencies to project level property value -->
> <j:set var="depDeployDir" value="${projectDepDeployDir}"/>
> <!-- Check to see if the jar.dependency.deploy.dir was overriden at the dependency level -->
> <j:if test="${dep.getProperty('jar.dependency.dist.dir')!=null}">
> <j:set var="depDeployDir" value="${dep.getProperty('jar.dependency.dist.dir')}${'/'}"/>
> </j:if>
> <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${depDeployDir}${dep.artifact}" />

Activity

Hide
Eric Giguere added a comment -

Added the whole plugin.jelly file since I've just realize that the CVS diff i've put in the description is not right... Its a diff against an already modified version of the file. Won't do much good to you guys. Sorry about that.

Show
Eric Giguere added a comment - Added the whole plugin.jelly file since I've just realize that the CVS diff i've put in the description is not right... Its a diff against an already modified version of the file. Won't do much good to you guys. Sorry about that.
Hide
Emmanuel Venisse added a comment -

Can you create a correct patch with the file present in cvs? Your plugin.jelly suppress a lot of lines.

Show
Emmanuel Venisse added a comment - Can you create a correct patch with the file present in cvs? Your plugin.jelly suppress a lot of lines.
Hide
Eric Giguere added a comment -

Hey!
Sure, I'll do that.
I'll get back on Maven RC1 build (currently working with a snapshot of 1.1 version) and update all plugins to insert this patch.

Show
Eric Giguere added a comment - Hey! Sure, I'll do that. I'll get back on Maven RC1 build (currently working with a snapshot of 1.1 version) and update all plugins to insert this patch.
Hide
Eric Giguere added a comment -

Hello.
Finally, here is the CVS diff run against jar plugin v1.6
A note.. I've submitted another change (the includes) for the plugin. The change was integrated a while ago but was removed from version 1.6. Is there a reason??

Anyway, I'll submit here both diffs:

Index: plugin.jelly
===================================================================
RCS file: /home/cvs/cvsroot/nhc-maven/maven-plugins/jar/plugin.jelly,v
retrieving revision 1.3
diff -w -b -i -r1.3 plugin.jelly
83c83,84
< excludes="${maven.jar.excludes}">

> excludes="${maven.jar.excludes}"
> includes="${maven.jar.includes}">

And here is the new addition to allow sub-dir deployment of dependency jars with Jar manifest classpath updated accordingly.

105a107,111
> <!-- Get the project level deployment sub-directory if it exists -->
> <j:if test="${pom.getProperty('jar.dependency.dist.dir')!=null}">
> <j:set var="projectDepDeployDir" value="${pom.getProperty('jar.dependency.dist.dir')}${'/'}"/>
> </j:if>
>
108c114,120
< <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${dep.artifact}" />

> <!-- Set default deploy sub-dir for dependencies to project level property value -->
> <j:set var="depDeployDir" value="${projectDepDeployDir}"/>
> <!-- Check to see if the jar.dependency.deploy.dir was overriden at the dependency level -->
> <j:if test="${dep.getProperty('jar.dependency.dist.dir')!=null}">
> <j:set var="depDeployDir" value="${dep.getProperty('jar.dependency.dist.dir')}${'/'}"/>
> </j:if>
> <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${depDeployDir}${dep.artifact}" />

          • CVS exited normally with code 1 *****
Show
Eric Giguere added a comment - Hello. Finally, here is the CVS diff run against jar plugin v1.6 A note.. I've submitted another change (the includes) for the plugin. The change was integrated a while ago but was removed from version 1.6. Is there a reason?? Anyway, I'll submit here both diffs: Index: plugin.jelly =================================================================== RCS file: /home/cvs/cvsroot/nhc-maven/maven-plugins/jar/plugin.jelly,v retrieving revision 1.3 diff -w -b -i -r1.3 plugin.jelly 83c83,84 < excludes="${maven.jar.excludes}"> — > excludes="${maven.jar.excludes}" > includes="${maven.jar.includes}"> And here is the new addition to allow sub-dir deployment of dependency jars with Jar manifest classpath updated accordingly. 105a107,111 > <!-- Get the project level deployment sub-directory if it exists --> > <j:if test="${pom.getProperty('jar.dependency.dist.dir')!=null}"> > <j:set var="projectDepDeployDir" value="${pom.getProperty('jar.dependency.dist.dir')}${'/'}"/> > </j:if> > 108c114,120 < <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${dep.artifact}" /> — > <!-- Set default deploy sub-dir for dependencies to project level property value --> > <j:set var="depDeployDir" value="${projectDepDeployDir}"/> > <!-- Check to see if the jar.dependency.deploy.dir was overriden at the dependency level --> > <j:if test="${dep.getProperty('jar.dependency.dist.dir')!=null}"> > <j:set var="depDeployDir" value="${dep.getProperty('jar.dependency.dist.dir')}${'/'}"/> > </j:if> > <j:set var="maven.jar.classpath" value="${maven.jar.classpath} ${depDeployDir}${dep.artifact}" />
          • CVS exited normally with code 1 *****

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated: