X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2FAntRegistryUtil.java;h=f9928708a23e20086301f8a742e6a384813212d3;hb=9e1c13c89607d19f6f82e5e84d05e207fdaac3fe;hp=634795e437e83297cec642eb56da9ab9d638389c;hpb=0ee30b3cfd07a1e96eeb21ee729b2c7825585b94;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java index 634795e43..f9928708a 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java @@ -1,10 +1,14 @@ package org.argeo.slc.ant; import java.io.File; +import java.net.URL; import java.util.List; +import java.util.Map; +import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; @@ -53,7 +57,8 @@ public class AntRegistryUtil { .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY); registry.setMode(StructureRegistry.ACTIVE); registry.setActivePaths(activePaths); - p.executeTarget(p.getDefaultTarget()); + + runProject(p, null); return p; } @@ -68,7 +73,31 @@ public class AntRegistryUtil { ProjectHelper helper = new SlcProjectHelper(); p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, helper); helper.parse(p, antFile); - p.executeTarget(target != null ? target : p.getDefaultTarget()); + + runProject(p, target); + return p; + } + + /** Executes all paths of the provided target of the Ant URL. */ + public static Project runAll(URL url, String target, Properties properties) { + if (log.isDebugEnabled()) + log.debug("Runs all paths of Ant URL " + url); + Project p = new Project(); + p.setUserProperty("ant.file", url.toString()); + // p.setBaseDir(url.toString()); + p.init(); + ProjectHelper helper = new SlcProjectHelper(); + p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, helper); + helper.parse(p, url); + + if (properties != null) { + for (Map.Entry entry : properties.entrySet()) { + p.setUserProperty(entry.getKey().toString(), entry.getValue() + .toString()); + } + } + + runProject(p, target); return p; } @@ -76,4 +105,16 @@ public class AntRegistryUtil { public static Project runAll(File antFile) { return runAll(antFile, null); } + + protected static void runProject(Project p, String target) { + p.fireBuildStarted(); + Throwable exception = null; + try { + p.executeTarget(target != null ? target : p.getDefaultTarget()); + } catch (Throwable e) { + exception = e; + } finally { + p.fireBuildFinished(exception); + } + } }