0

我有两个 ANT 构建文件,位于不同的目录中。我想将<include>一个<path>元素的内容从另一个中提取出来。

这似乎应该足够简单,但是我无法找到有关如何正确执行此操作的文档,因为 ANT 坚持始终评估<path>相对于当前的元素basedir(这是错误的,因为从另一个目录中的文件)。

4

1 回答 1

0

这似乎应该足够简单,但是我无法找到有关如何正确执行此操作的文档,因为 ANT 坚持始终评估相对于当前 basedir 的元素(这是错误的,因为访问它从另一个目录中的文件)。

ANT 这样做并没有错。build.xml文件通常存在于项目(或项目子组件)文件系统的根目录中,并表示该构建的逻辑。

如果您希望在两个项目之间共享路径,那么这是一个坏主意,两个项目很少会共享完全相同的构建路径.....

或者,如果您尝试在两个项目子组件之间共享路径,为什么不覆盖 basdir属性的默认值,如下所示?

<project name="my-project" default="build" basedir="..">
..

最后,我建议调查使用像Apache ivy这样的依赖管理器。让它为您管理构建的类路径。

更新

另一种选择是构建项目文件,使路径依赖项位于相同的相对文件系统路径中:

$ tree
.
|-- lib
|   |-- dependency1.jar
|   `-- dependency2.jar
|-- sub-component1
|   `-- build.xml
`-- sub-component2
    `-- build.xml

然后每个子组件build.xml声明它自己的路径,如下所示:

<path id="build.path">
    <fileset dir="../lib" includes="*.jar"/>
</path>
于 2012-04-16T17:09:55.467 回答