简体   繁体   中英

Ant does not include generated class files to packaged jar, until I do a Project->Clean in Eclipse

I ran into some strange behaviour that seems to be connected to Eclipse and it's way to refresh the workspace.

I'm using an Ant build file to create my class-files and to create a package from that class-file. This functionality is working fine.

This is the target doing the work:

    <target name="package" depends="compile,javaDoc">
    <jar destfile="${dist.dir}/MyApplication.jar" basedir="${build.dir}" includes="**/*.class">
        <zipgroupfileset dir="${lib.dir}" includes="*.jar" />

        <manifest>
            <attribute name="Main-Class" value="MyApplication" />
        </manifest>
    </jar>
</target>

Now I want to add functionality to first clean the directories where the class-files and the jar file are beeing generated.

This is the target code:

<target name="clean" description="Removes all *.class and *.jar files. Also deletes the java doc files.">
<delete dir="${build.dir}" />
<delete dir="${dist.dir}" /></target>

This target also works fine.

Now I would like the package target dependent on the clean target , so that the folders are first cleaned before the packaging is beeing done.

This would look like this:

    <target name="package" depends="clean,compile,javaDoc">
    <jar destfile="${dist.dir}/MyApplication.jar" basedir="${build.dir}" includes="**/*.class">
        <zipgroupfileset dir="${lib.dir}" includes="*.jar" />

        <manifest>
            <attribute name="Main-Class" value="MyApplication" />
        </manifest>
    </jar>
</target>

The problem is, that this target does not include the generated class files into the jar. Even on the file system the generated class files are not displayed. Only after I go to Project->Clean in Eclipse and clean the project the class files become visible on the filesystem.

Any help is appreciated.

My compile target looks like this:

    <target name="compile" depends="init" description="Compiles the source file to the created directory.">
    <javac classpathref="classpath" srcdir="${dist.dir}" destdir="${build.dir}" includeantruntime="false" />
</target>

fixing the error in the compile target worked. That is the working version:

 <target name="compile" depends="init" description="Compiles the source file to the created directory.">
<javac classpathref="classpath" srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" /></target>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM