0

我有一个典型的 ant 脚本:清理、编译、jar、javadocs 等。我在 Eclipse 中也有 3 个项目:一个库和 2 个项目来测试它。

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

库jar 的jar 名称中有它的版本,即library-0.1.jar。在 ant 脚本中,我有一个带有库版本的属性:

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

因此,要更改版本,我修改此属性并再次运行脚本。正如您可能推断的那样,这会在其他 2 个项目中产生依赖错误,因为它们仍将指向旧文件 library-0.1.jar。

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

谢谢。

4

3 回答 3

4

在所有构建文件中引用带有变量的版本,例如

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

现在,当您执行构建时,您可以使用显式版本执行以匹配您需要的内容,例如

ant -Dversion=1.3

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

<property file="version.properties">

请注意,如果您使用后者,您应该删除明确设置值的属性声明(从您上面的帖子中)。要么先加载属性文件。……

于 2011-04-15T12:20:38.003 回答
2

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

版本=2
sed s/value="\d+"/value="$version"/g build.xml
于 2011-04-15T12:10:13.483 回答
0

编辑:使用下面的方法,您将能够使用 Ant 进行编译,但 Eclipse 会在项目资源管理器中向您显示依赖错误,因为您没有在构建路径面板中定义任何外部 jar。要解决这个问题,您必须编辑您将在项目根目录中看到的 .classpath 文件并添加以下行:

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

其中 Library 是 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。

于 2011-04-15T14:13:35.473 回答