使用gradle扩展属性时如何获得ant行为?

ata*_*lor 5 ant properties gradle

我有一个蚂蚁项目,我正在转换为gradle.在蚂蚁项目中,有这样的事情:

<copy todir="dest_dir">
  <fileset>
     ...
  </fileset>
  <filterchain>
    <expandproperties/>
  </filterchain>
</copy>
Run Code Online (Sandbox Code Playgroud)

过滤器链扩展属性${property},但忽略没有大括号的美元符号.我试图在gradle中复制这种行为.

如果我expand如下所示,gradle将文件扩展为groovy模板,该模板尝试使用大括号扩展美元符号.

copy {
   from 'source_dir'
   into 'dest_dir'
   expand(project.properties)
}
Run Code Online (Sandbox Code Playgroud)

如果我filter使用ant ExpandProperties过滤器类,我会得到一个NullPointerException.有没有一种简单的方法可以做到这一点我错过了?

ata*_*lor 6

好的,我想通了.ExpandProperties过滤器需要使用Ant项目设置其项目属性.这是我配置它的工作方式:

copy {
    from 'source_dir'
    to 'dest_dir'
    filter(org.apache.tools.ant.filters.ExpandProperties, project: ant.antProject)
}
Run Code Online (Sandbox Code Playgroud)

这扩展${property}了与Ant完全相同的属性,而没有在没有括号的美元符号上绊倒.