我有一个简单的ant脚本:clean,compile,jar,javadocs等。我在Eclipse中也有3个项目:一个库和2个项目来测试它。
在这2个测试项目的构建路径中,我将库jar中的库jar定义为外部jar。
库jar在jar名称中有其版本,即library-0.1.jar。在ant脚本中,我有一个具有库版本的属性:
<property name="project_version" value="0.1"/>
因此,要更改版本,我修改此属性并再次运行脚本。正如您可能推断的那样,这会在其他2个项目中生成依赖性错误,因为它们仍将指向旧的文件库-0.1.jar。
如何自动更改Eclipse中其他2个项目的构建路径? Apache ant可以使用特定标记执行此操作吗?
感谢。
答案 0 :(得分:4)
请参阅所有构建文件中带变量的版本,例如
<include name="my-${version}.jar"/>
现在,当您执行构建时,可以使用explict版本执行以匹配您所需的内容,例如。
ant -Dversion=1.3
或者,您可以在每个构建脚本中加载相同的属性文件以加载版本属性
<property file="version.properties">
请注意,如果你使用后者,你应该删除属性声明(从上面的帖子中),它明确地设置了值。或者首先加载或加载属性文件。 ....
答案 1 :(得分:2)
使用sed,例如(未经测试):
version=2 sed s/value="\d+"/value="$version"/g build.xml
答案 2 :(得分:0)
编辑:使用下面的方法,您将能够使用Ant进行编译,但是eclipse会在项目资源管理器中显示依赖项错误,因为您没有在构建中定义任何外部jar路径面板。要解决此问题,您必须编辑将在项目根目录中看到的.classpath文件,并添加以下行:
<classpathentry kind="lib" path="../Library/bin"/>
其中Library是Library项目的文件夹,bin是类的文件夹。
的解决强>:
我必须为其他2个项目编写一个ant脚本,并使用脚本设置classpath,而不是使用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。