2

Ant スクリプトでファイルからプロパティの値を読み取り、最初の数文字を削除する必要があります。対象物件は、

path=file:C:/tmp/templates

このプロパティは、Ant スクリプト内でアクセスできるファイルに保存されます。

<property file="${web.inf.dir}/config.properties"/>

2 つの質問があります。

  1. 読み込まれたプロパティ ファイルから単一の「パス」プロパティを読み取るにはどうすればよいですか?
  2. プロパティ値から先頭の「file:」を削除するにはどうすればよいですか?

最終的には、Ant スクリプト内で次の名前と値のペアにアクセスできるようにしたいと考えています。

path=C:/tmp/templates

乾杯、ドン

4

4 に答える 4

3

完全パスと単純パスの両方にアクセスできるように、プロパティ ファイルを変更するだけではどうでしょうか。

path=C:/tmp/templates
fullpath=file:${path}
于 2009-09-24T13:43:17.597 に答える
3

Ant 1.6 以降LoadPropertiesでは、ネストされたFilterChain

<loadproperties srcFile="${property.file.name}">
  <filterchain>
    <tokenfilter>
      <containsstring contains="path=file:"/>
      <replaceregex pattern="path=file:" replace="path=" flags=""/>
    </tokenfilter>
  </filterchain>
</loadproperties>

これによりpath、文字列 "file:" が削除された状態でプロパティが読み込まれます。

テストされていません。emptor に注意してください...

于 2008-12-04T23:10:09.513 に答える
2

Ant Contribのpropertyregex タスクを使用して、同様のことを行いました。

于 2008-12-04T22:09:34.750 に答える
0

おそらく、ant の exec タスクとシステム コマンドを使用できます。

概念をテストするために、これをすばやく書きました。

<target name="foo">
  <property name="my.property" value="file:C:/foo/bar"/>
  <exec executable="/bin/cut" inputstring="${my.property}" outputproperty="new.property">
    <arg line="-d':' -f2-"/>
  </exec>
  <echo message="FOO: ${new.property}"/>
</target>

残念ながら、これは /bin/cut または使用できる何らかの実行可能ファイルを使用してシステム上でビルドできる場合にのみ機能します。

于 2008-12-04T22:12:29.050 に答える