【问题标题】:How to set Ant properties based on variables in Eclipse?如何在 Eclipse 中根据变量设置 Ant 属性?
【发布时间】:2011-06-07 07:37:54
【问题描述】:

我有一个常见的问题,可能有无数种方法可以解决它。我正在为这种典型场景寻找一个优雅、简单的解决方案:

我在 Eclipse 中有一个带有 Ant 构建文件 (build.xml) 的项目,该构建文件使用属性文件 (build.properties)。在该属性文件中,我想设置一个指向 eclipse 项目根目录的属性,例如:

project.root = /path/to/eclipse/workspace/projectName

或者最好:

project.root = ${path.to.eclipse.workspace}/projectName

我该如何做到这一点:

  1. 在不同的机器上使用不同的路径到项目根目录(即在团队环境中)
  2. 允许在 eclipse 中执行 ant build.xml 文件
  3. 允许在 Eclipse 之外执行 ant build.xml 文件(即从命令行)
  4. 允许 build.properties 文件存在于项目根目录以外的目录中

【问题讨论】:

  • 我什至会选择一个部分解决方案来优雅地解决问题#1 和#2。 3 号和 4 号要困难得多。

标签: eclipse variables ant properties build-process


【解决方案1】:

请参见 Window -> Preferences -> Ant -> Runtime -> Properties 来定义自定义 ant 属性,这些属性应该可用于从 Eclipse 调用的任何 ant 脚本。从命令行调用脚本时只需手动设置相同的属性。

您的 build.properties 文件可以存在于您喜欢的任何位置。使用普通的 Ant 工具将其导入到您的脚本中。

【讨论】:

  • 感谢您抽出宝贵时间回复。不幸的是,您的回复没有直接解决上述任何问题,因为 1) ant 运行时属性不包含项目根路径的条目。我猜我可以添加 ${workspace_loc} 或类似于属性列表的东西,但这在 eclipse 之外不起作用。 2) 从命令行调用脚本时手动设置属性不能很好地扩展到团队环境。 3) 最后,当导入属性文件时,相对路径可能会发生变化,因此需要绝对路径,这是一个问题。
【解决方案2】:

我认为我正在寻找的是将以下内容添加到 build.properties 文件中:

project.root = ${basedir}

或者,我可以在需要 project.root 时使用 basedir 属性。

我碰巧在看source code for ivy.properties,我看到正在使用的basedir 属性。我刚刚测试并验证了这个属性在 eclipse 内部和命令行以及从不同目录调用 ant 时都可以在不同的机器上运行,例如:

ant -f /path/to/eclipse/workspace/projectName/build.xml

当我有时间时,我将验证这在将属性文件导入不同位置(例如在 src/main/resources/config/ivy/ivysettings.xml 中)时是否也有效。

【讨论】:

    【解决方案3】:

    对于我的项目档案。

    ProjectName <dir>
     |_ ant <dir>
         |_ ant.xml
    

    您的案例只需更改 ant xml 文件,&lt;project default="main" basedir="../"/&gt;

    然后我可以使用变量 of 获取项目根目录

    例如&lt;echo message= "Project Root: ${basedir}" /&gt;

    【讨论】:

      【解决方案4】:

      如果您需要的不仅仅是琐碎的 basedir 东西 =
      Ant4Eclipse - 一堆用于从 ant 内部访问 eclipse 配置的 ant 任务 -
      可能会对您有所帮助。只需按原样使用它或 grep 代码并选择相关部分..

      【讨论】:

      • 谢谢,我会调查的。听起来很有用。
      【解决方案5】:

      您可以从 Eclipse 为您的 ANT Build 设置 Eclipse 相关属性

      转到您的 ANT Builder 属性和参数部分,您可以使用 -D 设置属性,如下所示

      -Dworkspace="${workspace_loc}" -Dproject_dir="${project_loc}"
      

      (这里的 workspace_loc 和 project_loc 是 eclipse 变量)。这些属性可以像常规属性一样在您的 ANT 构建脚本中访问,例如:

      <echo message="${workspace}" />
      <echo message="${project_dir}" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多