I have some servlet and I am trying to call an Ant script within the class
to compile a "project".  All of the references in the build script are not
relative, therefore some of the classpath references are not correct.  I
know I can change the properties, etc to fix this.  However, due to the
nature of our environment we do not want to do this.  With all that being
said, I do know that all the classpath entries that I need to compile the
needed classes are within my current servlet container (in my case Tomcat).
What can I do retrieve the correct classloader so that all the classes are
visible to the Ant script.  Below is a snippet of code I am using.  In
comments, you will see the various ways I have tried to call the
setCoreLoader method.

Thank you,

File buildfile = null;
try {
    buildfile = new File(this.workingDirectory.getPath() + "/build.xml");
    Project project = new Project();
    project.setBaseDir(this.workingDirectory);
    project.setName(this.project);
    project.setUserProperty("ant.file", buildfile.getPath());
    project.init();
    ProjectHelper helper = ProjectHelper.getProjectHelper();
    project.addReference("ant.projectHelper", helper);
    helper.parse(project, buildfile);
    Properties sysProps = System.getProperties();
    for (Iterator it = sysProps.entrySet().iterator();it.hasNext();) {
 Map.Entry entry = (Map.Entry) it.next();
 project.setProperty(entry.getKey().toString(), entry.getValue
().toString());
    }
    project.setProperty("basedir", project.getBaseDir().getPath());
    project.setProperty("ant.project.name", project.getName());
    project.setProperty("ant.file", buildfile.getPath());
    project.setCoreLoader(Thread.currentThread().getContextClassLoader());
//     project.setCoreLoader(null);
//     project.setCoreLoader(this.getClass().getClassLoader());
//     project.setCoreLoader(Thread.currentThread
().getContextClassLoader().getParent());
    project.execute("dist");
} catch (Exception e) {
    throw new RuntimeException(e);
} finally {
    project = null;
    buildfile = null;
}


--
Marc Farrow

Reply via email to