将 Ant 属性写入 YAML 文件



我想让我的 Ant 项目输出一些属性作为 YAML 文件。

例如:

<property name="foo" value="aaa"/>
<property name="bar" value="bbb"/>
<property name="baz" value="ccc"/>

写入输出.yml 作为

foo: aaa
bar: bbb
baz: ccc

任何人都可以建议一种不需要外部工具/库的方法吗?

Ant内置了JavaScript,你可以试试。 有关说明,请参见下文。

这将使用<scriptdef>来创建将一组属性写入文件的任务"props2yaml"。 我没有试图概括需要转义序列等的角色。

<scriptdef name="props2yaml" language="javascript">
<attribute name="destfile"/>
<element name="propertyset" type="propertyset"/>
<![CDATA[
  var destfile = attributes.get( "destfile" );
  //var properties = project.getProperties( );
  //var prop_names = properties.keySet( ).toArray( ).sort( );
  var properties = elements.get( "propertyset" ).get( 0 ).getProperties( );
  var prop_names = properties.stringPropertyNames( ).toArray( ).sort( );
  var fw = new java.io.FileWriter( destfile );
  for ( var i in prop_names ) {
      fw.write( prop_names[i] + ': "' + properties.get( prop_names[i] ) + '"n' );
  }
  fw.flush( );
  fw.close( );
]]></scriptdef>
<property name="foo" value="aaa"/>
<property name="bar" value="bbb"/>
<property name="baz" value="ccc"/>
<props2yaml destfile="output.yml">
  <propertyset>
     <propertyref name="foo" />
     <propertyref name="bar" />
     <propertyref name="baz" />
  </propertyset>
</props2yaml>

对我来说,在这种情况下的输出是:

bar: "bbb"
baz: "ccc"
foo: "aaa"

您可以通过根据需要更改脚本定义来保持顺序。

注释掉的行显示了如何获取项目中所有 Ant 属性的完整列表。

相关内容

  • 没有找到相关文章

最新更新