On Tue, Nov 25, 2008 at 3:24 PM, <[EMAIL PROTECTED]> wrote:
> Is there a way to print out what is in the Ant classpath?
To print out the classpath Ant is using, print ${java.class.path}.
--
David Weintraub
[EMAIL PROTECTED]
On Tue, Nov 25, 2008 at 3:24 PM, <[EMAIL PROTECTED]> wrote:
> Is there a way to print out what is in the Ant classpath? I've tried putting
> ant-junit.jar and junit.jar in both the ANT_HOME/lib directory and my
> HOME/.ant/lib directories but no luck. For those just tuning in, here is the
> task that is failing
>
> <target name="run-query-test" depends="build-tests">
> <echo>DEBUG: ${build}</echo>
> <junit dir="${build}" fork="true" haltonfailure="true">
> <classpath>
> <path refid="project.class.path"/>
> <pathelement path="${java.class.path}"/>
> <pathelement
> path="${dist}/cedarpointpooledclient.jar"/>
> <pathelement path="${build}"/>
> </classpath>
> <test name="QuerySubscriberTest" todir="${docs}"
> outfile="junit.query.result">
> <formatter type="xml"/>
> </test>
> </junit>
> </target>
>
> If you can think of an alternate way of writing the above, I'm willing to try
> anything. Thanks, -Dave
>
>
>
>> -------Original Message-------
>> From: David Weintraub <[EMAIL PROTECTED]>
>> Subject: Re: Re: How to figure out what is in my class path?
>> Sent: Nov 25 '08 19:46
>>
>> I think the POM is needed in order to understand the JUnit ant task
>> without having to define it in the antfile. I know I have to have a
>> <taskdef> task whenever I use Subverison or the AntContrib package. I
>> know that I don't need one for JUnit.
>>
>> Maybe you don't need the POM for JUnit. It isn't specified in the
>> JUnit task documentation.
>>
>> Remember there are three different classpaths involved. #1 is the
>> classpath that <javac>, <java>, or whatever task your running needs.
>> The second one is the one that the Java you're running Ant with needs.
>> And, the third is the Ant classpath needed for the various tasks you
>> need for Ant.
>> In order to use the JUnit task, the ant-junit.jar needs to be in Ant's
>> classpath. If you put it in $ANT_HOME/lib, it is automatically
>> included. However, you can use the -lib parameter when you run Ant, or
>> include it in your $HOME/.ant/lib forlder. See
>> <http://ant.apache.org/manual/running.html#libs> for more information.
>>
>> --
>> David Weintraub
>> [EMAIL PROTECTED]
>>
>>
>>
>> On Tue, Nov 25, 2008 at 1:28 PM, <[EMAIL PROTECTED]> wrote:
>> > This is the first I've heard about a "ant-junit-xx.pom" file. So it's
>> impossible to run junit without this file? Needless to say, I tried adding
>> the ant-junit.jar and junit.jar files to the junit <classpath> directive
>> without success ...
>> >
>> > <target name="run-query-test" depends="build-tests">
>> > <echo>DEBUG: ${deployment}/APP-INF/lib/junit.jar</echo>
>> > <junit dir="${build}" fork="true" haltonfailure="true">
>> > <classpath>
>> > <path refid="project.class.path"/>
>> > <pathelement
>> path="${deployment}/APP-INF/lib/junit.jar"/>
>> > <pathelement
>> pathu="${deployment}/APP-INF/lib/ant-junit.jar"/>
>> > <pathelement path="${java.class.path}"/>
>> > <pathelement
>> path="${dist}/cedarpointpooledclient.jar"/>
>> > <pathelement path="${build}"/>
>> > </classpath>
>> > <test name="QuerySubscriberTest" todir="${docs}"
>> outfile="junit.query.result">
>> > <formatter type="xml"/>
>> > </test>
>> > </junit>
>> > </target>
>> >
>> > I can't easily add files to ANT_HOME/lib and so was hoping I could
>> include the JAR files elsewhere. - Dave
>> >
>> >
>> >
>> >> -------Original Message-------
>> >> From: David Weintraub <[EMAIL PROTECTED]>
>> >> Subject: Re: Re: How to figure out what is in my class path?
>> >> Sent: Nov 25 '08 17:22
>> >>
>> >> You know that the JUnit's task is an *optional* task. You need to
>> >> include the ant-junit.jar in your $ANT_HOME/lib directory as well as
>> >> with the ant-junit-xx.pom file. I don't believe you have to define the
>> >> JUnit tasks in your build.xml file because it can use the *.pom for
>> >> the definition.
>> >>
>> >> See <http://ant.apache.org/manual/OptionalTasks/junit.html> for more
>> >> information.
>> >>
>> >> --
>> >> David Weintraub
>> >> [EMAIL PROTECTED]
>> >>
>> >>
>> >>
>> >> On Tue, Nov 25, 2008 at 10:01 AM, <[EMAIL PROTECTED]> wrote:
>> >> > Thanks! Adding 'classpathref="project.class.path"' to the condition
>> caused the condition to pass.
>> >> >
>> >> > I have hit another stumbling block ater, though. The build script
>> being executed dies when it gets to this task:
>> >> >
>> >> > <target name="run-change-display-name-test" depends="build-tests">
>> >> > <junit dir="${build}" fork="true" haltonfailure="true">
>> >> > <classpath>
>> >> > <path refid="project.class.path"/>
>> >> > <path refid="${deployment}/APP-INF/lib/junit.jar"/>
>> >> > <pathelement path="${java.class.path}"/>
>> >> > <pathelement path="${dist}/cedarpointpooledclient.jar"/>
>> >> > <pathelement path="${build}"/>
>> >> > </classpath>
>> >> > <test name="ChangeDisplayNameTest" todir="${docs}"
>> outfile="junit.change.display.name.result">
>> >> > <formatter type="xml"/>
>> >> > </test>
>> >> > </junit>
>> >> > </target>
>> >> >
>> >> > with the error message,
>> >> >
>> >> > BUILD FAILED
>> >> >
>> /export/third-party/etsbea/staging/wls_9.2.2/CedarPoint_Service/build-junit-test.xml:119:
>> Could not create task or type of type: junit.
>> >> >
>> >> > Ant could not find the task or a class this task relies upon.
>> >> >
>> >> > This is common and has a number of causes; the usual
>> >> > solutions are to read the manual pages then download and
>> >> > install needed JAR files, or fix the build file:
>> >> > - You have misspelt 'junit'.
>> >> > Fix: check your spelling.
>> >> > - The task needs an external JAR file to execute
>> >> > and this is not found at the right place in the classpath.
>> >> > Fix: check the documentation for dependencies.
>> >> > Fix: declare the task.
>> >> > - The task is an Ant optional task and the JAR file and/or libraries
>> >> > implementing the functionality were not found at the time you
>> >> > yourself built your installation of Ant from the Ant sources.
>> >> > Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to
>> the
>> >> > task and make sure it contains more than merely a
>> META-INF/MANIFEST.MF.
>> >> > If all it contains is the manifest, then rebuild Ant with the
>> needed
>> >> > libraries present in ${ant.home}/lib/optional/ , or alternatively,
>> >> > download a pre-built release version from apache.org
>> >> > - The build file was written for a later version of Ant
>> >> > Fix: upgrade to at least the latest release version of Ant
>> >> > - The task is not an Ant core or optional task
>> >> > and needs to be declared using <taskdef>.
>> >> > - You are attempting to use a task defined using
>> >> > <presetdef> or <macrodef> but have spelt wrong or not
>> >> > defined it at the point of use
>> >> >
>> >> > Remember that for JAR files to be visible to Ant tasks implemented
>> >> > in ANT_HOME/lib, the files must be in the same directory or on the
>> >> > classpath
>> >> >
>> >> >
>> >> > I have listed both '<path refid="project.class.path"/>' and '<path
>> refid="${deployment}/APP-INF/lib/junit.jar"/>' in the <classpath>. Am I not
>> doing it right?
>> >> >
>> >> > Thanks, - Dave
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >> -------Original Message-------
>> >> >> From: [EMAIL PROTECTED]
>> >> >> Subject: Re: Re: How to figure out what is in my class path?
>> >> >> Sent: Nov 25 '08 04:03
>> >> >>
>> >> >> On Nov 24, 2008 3:01pm, [EMAIL PROTECTED] wrote:
>> >> >> > Thanks, that worked, the path prints out.
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > Now the real question. � I have confirmed that "junit.jar" is in
>> my
>> >> >> project.class.path, but the condition that checks for JUnit is still
>> >> >> failing
>> >> >>
>> >> >> We know that your classpath in project.class.path is getting set.
>> >> >> Let's look at how you use the <available> task:
>> >> >>
>> >> >> <condition property="isJUnitAvailable">
>> >> >> <available classname="junit.framework.TestCase"/>
>> >> >> </condition>
>> >> >>
>> >> >> How does <available> know which classpath to use? According to the
>> >> >> documentation on the <available> task, if you don't specify which
>> >> >> classpath to use, it will use Ant's default classpath. Try
>> referencing
>> >> >> the classpath that contains the JUnit class in the <available> task:
>> >> >>
>> >> >> <available property="isJUnitAvailable"
>> >> >> classname="junit.framework.TestCase"
>> >> >> classpathref="project.class.path"/>
>> >> >>
>> >> >> Or (using the <condition> task):
>> >> >>
>> >> >> <condition property="isJUnitAvailable">
>> >> >> <available classname="junit.framework.TestCase"
>> >> >> classpathref="project.class.path"/>
>> >> >> </condition>
>> >> >>
>> >> >> That way, you're saying to look for the classname in your
>> >> >> "project.class.path".
>> >> >
>> >>
>> >
>>
>