2 Stimmen

Eigenschaftswert in Ant lesen

Ich muss den Wert einer Eigenschaft aus einer Datei in einem Ant-Skript lesen und die ersten paar Zeichen entfernen. Die betreffende Eigenschaft ist

path=file:C:/tmp/templates

Diese Eigenschaft wird in einer Datei gespeichert, auf die ich innerhalb des Ant-Skripts über

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

Ich habe zwei Fragen:

  1. Wie lese ich die einzelne Eigenschaft "Pfad" aus der geladenen Eigenschaftsdatei?
  2. Wie entferne ich das führende "file:" aus dem Eigenschaftswert?

Letztendlich möchte ich innerhalb des Ant-Skripts Zugriff auf das folgende Name-Wert-Paar haben:

path=C:/tmp/templates

Zum Wohl, Don

3voto

Ken Gentle Punkte 13137

In Ant 1.6 oder später können Sie LoadProperties mit einer verschachtelten FilterChain

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

Dies sollte dazu führen, dass ein path Eigenschaft, die mit der Zeichenkette "file:" geladen wird, wird entfernt.

Nicht getestet, caveat emptor...

3voto

Brian Kelly Punkte 5462

Wie wäre es, wenn Sie die Eigenschaftsdatei so ändern, dass Sie sowohl auf den vollständigen als auch auf den einfachen Pfad zugreifen können?

path=C:/tmp/templates
fullpath=file:${path}

2voto

Dan Dyer Punkte 52915

Ich habe die Eigenschaftsregex-Aufgabe von Ameisenbeitrag um etwas Ähnliches zu tun.

0voto

Rob Hruska Punkte 114761

Sie können wahrscheinlich die exec-Aufgabe von ant und einen Systembefehl verwenden.

Ich habe dies schnell geschrieben, um das Konzept zu testen:

<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>

Leider funktioniert dies nur, wenn Sie auf einem System mit /bin/cut oder einer anderen ausführbaren Datei bauen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X