Hi Guys,

I'm invoking ANT programmatically in Java, and I'm having a hard time with
running some targets. The code is that classical one:

p.fireBuildStarted();
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
ProjectHelper.configureProject( p, buildFile);
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget("_scanProject");
p.fireBuildFinished(null);

so my build file is not a build.xml it is called javalanche.xml : File
buildFile = new File(javalancheDestination,"javalanche.xml");

The code is working fine, but the problem is that I'm not sure if I'm
calling the targets right.

So my build file (javalanche.xml) imports another XML file
(mutation-include.xml).

so the target I'm calling (_scanProject) is in mutation-include.xml:

    <target name="_scanProject">
        <property name="scan.project.mutation.javaagent"
value="-javaagent:${javalanche.mutation.javaagent}"/>
        <property name="scan.project.memory"
value="-Xmx${javalanche.maxmemory}"/>
        <property name="scan.project.mutation.run.mode"
value="-Dmutation.run.mode=scan-project"/>
        <property name="scan.project.javalanche.package.prefix"
value="-Dmutation.package.prefix=${project.prefix}"/>
        <property name="scan.project.javalanche.project.test.suite"
value="-Dmutation.test.suite=${project.test.suite}"/>
        <property name="scan.project.verbose" value="-verbose"/>

        <path id="scan.project.classpath.add">
            <path refid="mutation.classpath"/>
        </path>

        <antcall target="test-javalanche">
            <!--${scan.project.verbose}-->
            <param name="javalanche.arg.line" value="
${scan.project.mutation.javaagent} ${scan.project.memory}
${scan.project.mutation.run.mode} ${scan.project.javalanche.package.prefix}
${scan.project.javalanche.project.test.suite} " />
            <reference refid="scan.project.classpath.add"
torefid="javalanche.classpath.add"/>
        </antcall>
    </target>

The "test-javalanche" target is in the javalanche.xml file:

    <target name="test-javalanche">
        <mkdir dir="mutation-files/junit-reports"></mkdir>
        <junit dir="." printSummary="yes" fork="true" forkmode="once"
showoutput="true">
            <classpath>
                <path refid="javalanche.classpath.add" />
                <pathelement path="${cp}"></pathelement>
            </classpath>

            <jvmarg line="${javalanche.arg.line}" />

            <formatter type="xml"/>
            <formatter usefile="true" type="plain"/>
            <test todir="mutation-files/junit-reports" name="${testsuite}"
/>
        </junit>
    </target>

So when I call p.executeTarget("_scanProject"); it doesn't run right because
it doensn't run the target test-javalanche properly. It just creates the
directory.
The XML files are all fine. Because when I run it in the command line: "ant
-f javalanche.xml _scanProject"  it runs perfectly. I'm not sure if
javalanche.arg.line is passed to test-javalanche.

Any thoughts on how to call the target right??

Cheers,
--
David Nemer
Sent from Frankfurt Am Main, HE, Germany

Reply via email to