+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.net.URL;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.ProjectHelper;\r
-\r
-public class AntRunner {\r
- private ApplicationContext context;\r
- private ProjectHelper projectHelper;\r
- private URL buildFile;\r
- private String[] targets;\r
- private Properties properties;\r
-\r
- public AntRunner() {\r
-\r
- }\r
-\r
- public AntRunner(ApplicationContext context, ProjectHelper projectHelper,\r
- URL buildFile, String[] targets) {\r
- super();\r
- this.context = context;\r
- this.projectHelper = projectHelper;\r
- this.buildFile = buildFile;\r
- this.targets = targets;\r
- }\r
-\r
- public AntRunner(ApplicationContext context, URL buildFile, String target) {\r
- super();\r
- this.context = context;\r
-\r
- BasicSlcProjectHelper basicSlcProjectHelper = new BasicSlcProjectHelper();\r
- this.projectHelper = basicSlcProjectHelper;\r
- basicSlcProjectHelper.setContext(context);\r
-\r
- this.buildFile = buildFile;\r
- this.targets = new String[] { target };\r
- }\r
-\r
- public void run() {\r
- Project p = new Project();\r
-\r
- String path = buildFile.getFile();\r
- p.setUserProperty("ant.file", path);\r
- p.setBaseDir(extractBaseDir(path));\r
-\r
- p.init();\r
- p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, projectHelper);\r
- projectHelper.parse(p, buildFile);\r
-\r
- if (properties != null) {\r
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {\r
- p.setUserProperty(entry.getKey().toString(), entry.getValue()\r
- .toString());\r
- }\r
- }\r
-\r
- p.fireBuildStarted();\r
- Throwable exception = null;\r
- try {\r
- if (targets == null) {\r
- p.executeTarget(p.getDefaultTarget());\r
- } else {\r
- p.executeTargets(new Vector<String>(Arrays.asList(targets)));\r
- }\r
- } catch (Throwable e) {\r
- exception = e;\r
- throw new SlcAntException("Could not run Ant script " + buildFile,\r
- e);\r
- } finally {\r
- p.fireBuildFinished(exception);\r
- }\r
-\r
- }\r
-\r
- private File extractBaseDir(String path) {\r
- String baseDir = null;\r
- if (path.length() > 1) {\r
- int indx = path.lastIndexOf('/', path.length() - 1);\r
- if (indx == -1 || indx == 0) {\r
- baseDir = "/";\r
- } else {\r
- baseDir = path.substring(0, indx) + "/";\r
- }\r
- } else {\r
- baseDir = "/";\r
- }\r
- File file = new File(baseDir);\r
- if (file.exists()) {\r
- return file;\r
- } else {\r
- return new File(System.getProperty("user.dir"));\r
- }\r
- }\r
-\r
- public static void main(String[] args) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
-\r
-}\r