buildr 是否有预定义的变量,如 capistrano,用于“target”、“reports”等目录?如果不是,除了硬编码这些目录的位置,我们还能如何定位/确定这些路径?
最终目标是创建一个任务,该任务将即时创建文件并将其插入目标目录。
Buildr 为特殊目录定义符号名称。( path_to
aka _
) 方法接受这些符号名称并自动将它们转换为当前布局的路径。例如,
define 'foo' do
puts _(:target, :main, :classes) # => /some/root/foo/target/classes
puts path_to(:source, :main, :java) # => /some/root/foo/src/main/java
end
正如 Antoine 在回复另一个答案时指出的那样,文档中有这些符号名称的列表。
您可以定义一个新布局并在您的项目中使用它。
这里的构建文件示例:
my_layout = Layout.new
my_layout[:source, :main, :java] = 'java'
my_layout[:source, :main, :resources] = 'resources'
define 'foo', :layout=>my_layout do
...
end
更新
Buildr 教程的链接http://buildr.apache.org/extending.html#layouts
正如 UR6LAD 所说,构建器将其所有路径存储在每个项目的Layout
. 本页介绍了默认布局。可以使用 访问目标目录layout[:target]
。