DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23552>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23552 Clearer documentation on best practices with JUnit and optional.jar are needed Summary: Clearer documentation on best practices with JUnit and optional.jar are needed Product: Ant Version: 1.5.4 Platform: All OS/Version: All Status: NEW Severity: Enhancement Priority: Other Component: Documentation AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Fighting with junit.jar and optional.jar was a great pain when I had to do it recently. It would have helped me to have a clearer document than what now exists on how to set up your ant installation and build.xml using junit.jar and optional.jar if you do not want to include those jars in ant/lib. Putting jars in ant/lib begins to fail as you need more specialty jars. For example, several of my recent projects have been bitten badly by having out of date versions of xalan in ant/lib, used with the style task. Further, your ant install gets arcane as more and more specialty jars get added. xdoclet, for example, requires a whole raft of jars in ant/lib, and is very likely to get out of date with other apache-based projects. Our group thus moved to refactor our ANT installation to be a pure, from the factory, install. We are also directed to include xalan.jar, junit.jar, and the like, from a known-safe per project install. (Actually, we have a lib dir with a zillion versions of libraries in it, and individual projects include the version they need.) Making this work with junit and optional not in ant/lib has been a real pain. I finally figured out what to do, but it took a lot more effort than I really wanted to spend on what seems to be a very common task. What I would like is a document that spells out very clearly the best practices for integrating junit tasks and style tasks when junit.jar and xalan.jar are not in ant/lib. In my mind, the best way to do this is with a simple build.xml that builds a java file, builds a Test java file, runs the junit test, and boxes up the resulting jar. I have attached such a build file, but I am not sure it contains what would be thought of as best practices. I submit it in hopes that a better build.xml and explanatory document might appear for 1.6. If it seems appropriate, feel free to add explanatory text as needed, to simplify, or to otherwise make it easier for someone else to do what took me so long. <project default="package" basedir="."> <property name="test.dir" location="./test/"/> <property name="src.dir" location="./src/"/> <property name="src.test" location="${test.dir}/src/"/> <property name="lib.dir" location="./lib"/> <property name="optional.jar" location="${ant.home}/optional/optional.jar"/> <property name="junit.jar" location="${lib.dir}/junit.jar"/> <path id="junit.classpath"> <pathelement location="${optional.jar}"/> <pathelement location="${junit.jar}"/> </path> <taskdef name= "junit" classname= "org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpathref="junit.classpath"/> <taskdef name= "junitperf" classname= "org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpathref="junit.classpath"/> <taskdef name= "junit" classname= "org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpathref="junit.classpath"/> <property name="build.dir" location="./build"/> <property name="build.dest" location="./build/classes"/> <property name="build.test" location="./build/test"/> <property name="dist.root" location="./dist"/> <property name="build.debug" value="yes"/> <property name="build.deprecation" value="yes"/> <property name="build.optimize" value="yes"/> <property name="jar.name.base" value="bonusfinder"/> <property name="jar.name" location="${build.dir}/${jar.name.base}.jar"/> <property name="jar.main-class" value="BonusFinder"/> <path id="compile.classpath"> </path> <path id="test.classpath"> <path refid="compile.classpath"/> <pathelement location="${junit.jar}"/> <pathelement location="${jar.name}"/> <pathelement location="${build.test}"/> </path> <target name="init"> <tstamp/> <mkdir dir="${build.dir}"/> <mkdir dir="${build.dest}"/> <mkdir dir="${build.test}"/> </target> <!-- ============================================================ ======= --> <!-- Compiles the source directory --> <!-- ============================================================ ======= --> <target name="compile" depends="init"> <javac srcdir="${src.dir}" destdir="${build.dest}" debug="${build.debug}" deprecation="${build.deprecation}" optimize="${build.optimize}"> <classpath refid="compile.classpath"/> </javac> </target> <!-- ============================================================ ======= --> <!-- Compiles the test directory --> <!-- ============================================================ ======= --> <target name="compile-test" depends="package"> <javac srcdir="${src.test}" destdir="${build.test}" debug="${build.debug}" deprecation="${build.deprecation}" optimize="${build.optimize}"> <classpath refid="test.classpath"/> </javac> <copy todir="${build.test}"> <fileset dir="${src.test}" excludes="**/*.java"/> </copy> </target> <!-- ============================================================ ======= --> <!-- Runs the tests --> <!-- ============================================================ ======= --> <target name="test" depends="compile-test"> <junit haltonfailure="true" printsummary="true" includeantruntime="false"> <classpath refid="test.classpath"/> <formatter type="brief" usefile="false"/> <test name="SimpleTest" /> </junit> </target> <!-- ============================================================ ======= --> <!-- Creates the jar --> <!-- ============================================================ ======= --> <target name="package" depends="compile"> <jar jarfile="jar.name" basedir="${build.dest}"> <manifest> <attribute name="Main-Class" value="${jar.main-class}"/> </manifest> </jar> </target> <!-- ============================================================ ======= --> <!-- Clean targets --> <!-- ============================================================ ======= --> <target name="clean" depends="init"> <delete dir="${build.dir}"/> </target> </project> <!-- End of file --> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]