2011-04-15 102 views
0

我有一个蚂蚁脚本,用于清理,编译,jar,javadocs等。我在Eclipse中也有3个项目:一个库和两个项目来测试它。在Eclipse中使用Apache Ant修改项目构建路径

在这两个测试项目的构建路径中,我定义为位于库项目中的库jar作为外部jar。

库jar的版本是jar名称,即library-0.1.jar。在ant脚本我有库的版本属性:

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

因此,要改变我的版本修改此属性,然后再次运行该脚本。正如你可能推论的那样,这会在其他两个项目中产生依赖性错误,因为它们仍然会指向一个旧的文件库-0.1.jar。

如何自动更改Eclipse中其他两个项目的构建路径? Apache ant可以用特定的标签来做到这一点?

谢谢。

回答

0

编辑:使用下面你将能够使用Ant来编译,但是Eclipse将显示您在Project Explorer的依赖错误的方法,因为你没有定义任何外部jar在构建路径面板中。为了解决这个问题,你必须编辑.classpath文件,你将在项目的根看,并添加以下行:

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

其中图书馆是图书馆的项目和料箱的类文件夹中的文件夹。




解决

我必须写为2个项目的ant脚本,并用脚本设置类路径,而不是与Eclipse IDE:

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

$ {dist}是jar库的文件夹,类似于“../Library/dist”,其中Library是项目的名称。
$ {PROJECT_NAME}和$ {} project_version是从version.properties加载文件,再次被存储在 “../Library”:

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

文件version.properties只包含:

project_name=LibraryName 
project_version=0.1 

然后,编译时添加的类路径...

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

的REFID值是前面定义的路径ID。

2

使用sed,例如, (未测试):

 
version=2 
sed s/value="\d+"/value="$version"/g build.xml 
4

请参考所有构建文件中包含变量的版本,例如

<include name="my-${version}.jar"/> 

现在,当您执行构建时,可以使用explict版本执行以符合您的要求,例如,

ant -Dversion=1.3 

或者,你可以加载相同的属性在每个构建脚本文件来加载版本属性

<property file="version.properties"> 

请注意,如果后者去,你应该删除的财产申报(从你在上面发帖)明确地设置了值。要么或先加载属性文件。 ....

+0

我已经使用version变量创建了一个version.properties文件,并用于库构建脚本(使用属性,而不是属性),但是我在测试项目中遇到了问题,包括jar。 “include”标签是否添加了jar来构建路径? – 2011-04-15 13:11:19

+1

是的,我只是猜测你会在构建文件中使用构建classpath到你的jar中,但是也许你做的不同。在任何情况下,在依赖项目的构建文件中引用库jar的地方,都要使用该变量。 – sudocode 2011-04-15 14:05:57