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 &&
!extDependency.GroupId.equals('junit') &&
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>
smime.p7s
Description: S/MIME cryptographic signature
