ANT.jar calling Targets not properly

View: New views
2 Messages — Rating Filter:   Alert me  

ANT.jar calling Targets not properly

by davidnemer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: ANT.jar calling Targets not properly

by davidnemer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I just tested it again, and the arguments to ${javalanche.arg.line} is
passed all right, so I don't know why it wont run the test-javalanche
properly.
--
David Nemer
Sent from Frankfurt Am Main, HE, Germany

On Thu, Oct 8, 2009 at 11:13 AM, David Nemer <davidnemer@...> wrote:

> 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