You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by po...@apache.org on 2004/02/03 23:44:18 UTC

cvs commit: jakarta-commons/jelly maven.xml

polx        2004/02/03 14:44:17

  Modified:    jelly    maven.xml
  Log:
  Adding a goal named pack-fat-jar so that one can pack a binary of jelly and
  all its dependent in one double-clickable jar.
  Use as follows:
   maven pack-fat-jar -DtagLibs=xml,util
  java -jar target/jellypack.jar myFile.jelly
  
  Not much tested, thanks to comment!
  paul
  
  Revision  Changes    Path
  1.66      +68 -0     jakarta-commons/jelly/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/maven.xml,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- maven.xml	25 Dec 2003 22:09:58 -0000	1.65
  +++ maven.xml	3 Feb 2004 22:44:17 -0000	1.66
  @@ -313,4 +313,72 @@
         <path refid="maven.dependency.classpath"/>
       </path>
     </goal>
  +	
  +	
  +	
  +	<goal name="pack-fat-jar" prereqs="jar"
  +			description="Creates a jar with all the dependencies of jelly and the taglibs indicated in ${tagLibs}.">
  +	<!-- this goal isn't really much tested yet but could be the key
  +		to get a better packaging -->
  +			
  +    <j:new var="jellyTaglibNames" className="java.util.HashSet"/>
  +    <j:set var="taglibs_projects" value=""/>
  +		<util:tokenize delim="," var="tagLibnames">${tagLibs}</util:tokenize>
  +    <j:forEach var="tlName" items="${tagLibnames}">
  +      <echo>Considering taglib tlName "${tlName}".</echo>
  +      <j:if test="${'core' ne tlName}">
  +        <j:if test="${taglibs_projects.length() > 0}"><j:set var="taglibs_projects" trim="false">${taglibs_projects},</j:set></j:if>
  +        <j:set var="taglibs_projects">${taglibs_projects}jelly-tags/${tlName}/project.xml</j:set>
  +          ${jellyTaglibNames.add(tlName)}
  +        </j:if>
  +      </j:forEach> 
  +    
  +      <!-- collect all dependencies in a set -->
  +     <j:new var="deps" className="java.util.HashSet"/>
  +
  +    <maven:reactor
  +      basedir="." goal="jar:install-snapshot"
  +      postProcessing="true"
  +      includes="${taglibs_projects}"
  +      ignoreFailures="false">
  +        </maven:reactor>
  +    <j:forEach var="reactorProject" items="${reactorProjects}">
  +      <j:forEach var="dep" items="${reactorProject.dependencies}">${deps.add(dep)}</j:forEach>
  +    </j:forEach>
  +    <j:forEach var="tl" items="${jellyTaglibNames}">
  +      <j:new var="tlD" className="org.apache.maven.project.Dependency"/>
  +        ${tlD.setGroupId("commons-jelly")}
  +        <j:set var="artId" value="commons-jelly-tags-${tl}"/>
  +        ${tlD.setArtifactId(artId)}
  +        ${tlD.setType("jar")}
  +        ${tlD.setVersion("SNAPSHOT")}
  +      ${deps.add(tlD)}
  +      </j:forEach>
  +  
  +    <maven:reactor
  +        basedir="."
  +        postProcessing="true"
  +        includes="project.xml"
  +        ignoreFailures="false">
  +        </maven:reactor>
  +    <j:forEach var="reactorProject" items="${reactorProjects}">
  +      <j:forEach var="dep" items="${reactorProject.dependencies}">${deps.add(dep)}</j:forEach>
  +    </j:forEach>
  +
  +    
  +    <j:file name="${maven.build.dir}/deps.txt">${deps}</j:file>
  +    
  +    <!-- we could process project's dependencies if we were a plugin -->
  +    
  +    <!-- merging it all -->
  +    <jar destfile="${maven.build.dir}/jellypack.jar">
  +      <manifest>
  +        <attribute name="Main-Class" value="org.apache.commons.jelly.Jelly"/></manifest>
  +      <j:forEach var="dep" items="${deps}">
  +        <zipfileset src="${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifact}" />
  +        <echo>Adding jar ${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifact}.</echo>
  +        </j:forEach>
  +      </jar>
  +			
  +		</goal>
   </project>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org