Hi,

I've written a little piece of jelly code. Maybe someone else will also find
it useful. I have this in maven.xml in parent project for all my projects.
With this code I have very simple dependency inheritance between my
subprojects. Of course it can be easily expanded to artifacts from multiple
groups.

-- Marcin Werla

----------------------------------------------------------------------------

    <preGoal name="build:start">
      <echo message="Gathering dependencies from associated ${pom.GroupId}
subprojects..."/>
      <j:new var="extraDepsSet" className="java.util.HashSet"/>
      <j:set var="artifacts" value="${pom.Artifacts}"/>
      <j:forEach var="artifact" items="${artifacts}">
        <j:set var="dependency" value="${artifact.Dependency}"/>       
        <j:if test="${dependency.GroupId == pom.GroupId}">
          <echo message="Checking project
${dependency.GroupId}:${dependency.ArtifactId}"/>
          <util:file
name="${maven.repo.local}/${dependency.GroupId}/poms/${dependency.ArtifactId
}-${dependency.Version}.pom" var="pomFile" />
          <j:invokeStatic var="depProject"
className="org.apache.maven.MavenUtils" method="getProject">
            <j:arg type="java.io.File" value="${pomFile}" />
            <j:arg type="org.apache.maven.jelly.MavenJellyContext"
value="${context}"/>
            <j:arg type="boolean" value="false"/>
          </j:invokeStatic> 
          <j:forEach var="extDependency" items="${depProject.Dependencies}">
            <j:if test="${extDependency.GroupId != pom.GroupId &amp;&amp;
!extDependency.GroupId.equals('junit') &amp;&amp;
pom.getDependency(extDependency.Id) == null}">
              <j:forEach var="depProperty" items="${dependency.Properties}">
                <j:if
test="${!depProperty.equals('property:eclipse.dependency:true')}">
                  <j:expr
value="${extDependency.addProperty(depProperty)}"/>
                </j:if>
              </j:forEach>
              <j:set var="" value="${extraDepsSet.add(extDependency)}"/>
            </j:if>
          </j:forEach>
        </j:if>
      </j:forEach>
      <j:forEach var="extDep" items="${extraDepsSet}">
        <echo message="Adding: ${extDep.Id} ${extDep.Properties}"/>
        <j:expr value="${pom.addDependency(extDep)}"/>
        <j:new var="extArt"
className="org.apache.maven.repository.GenericArtifact">
          <j:arg value="${extDep}"/>
        </j:new>
        <j:set var="depPath"
value="${maven.repo.local}${extArt.generatePath()}"/>
        <j:expr value="${extArt.setPath(depPath)}"/>
        <j:set var="" value="${artifacts.add(extArt)}"/>
      </j:forEach>      
    </preGoal>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to