Search code examples
eclipseantbuildpath

Modify project build path with Apache Ant in Eclipse


I have an ant script that does the tipically: clean, compile, jar, javadocs, etc. I also have 3 projects in Eclipse: a library and 2 projects to test it.

In the build path of this 2 test projects I've defined as external jar the library jar located in the library project.

The library jar has its version in the jar name, i.e. library-0.1.jar. In the ant script I have a property with the version of the library:

<property name="project_version" value="0.1"/>

So to change the version I modify this property and run the script again. As you may deduce this generates a dependency error in the 2 other projects because they will still be pointing to an old file library-0.1.jar.

How can I change automatically the build path of that 2 other projects in Eclipse? Apache ant can do this with a specific tag?

Thanks.


Solution


  • EDIT: Using the method below you will be able to compile using Ant, but eclipse will show you a dependency error in the project explorer because you don't have defined any external jar in the build path panel. To solve this you have to edit the .classpath file that you will see in the project root and add the following line:

    <classpathentry kind="lib" path="../Library/bin"/>
    

    Where Library is the folder for Library project and bin the folder for classes.




    SOLVED:

    I have to write an ant script for the 2 other projects and set the classpath with the script, not with eclipse IDE:

    <path id="build-classpath">
        <fileset dir="${dist}">
            <include name="${project_name}-${project_version}.jar"/>
        </fileset>
    </path>
    

    ${dist} is the folder where is the jar library it's something like: "../Library/dist", where Library is the name of the project.
    ${project_name} and ${project_version} are loaded from a version.properties file that, again, is stored in "../Library":

    <property file="..Library/version.properties"/>
    

    The file version.properties just contains:

    project_name=LibraryName
    project_version=0.1
    

    Then, to add the classpath when compiling...

    <target name="compile" depends="clean, makedir">
        <javac srcdir="${src}" destdir="${bin}">
            <classpath refid="build-classpath"/>
        </javac>
    </target>
    

    The refid value is the path id defined previously.