2016-07-01 20 views
4

Kann ein vorhandenes Pfad-Tag in einer ant-Build-Datei erweitert werden? Z. B möchte ich erweitern:Erweitern des vorhandenen Pfadnamens "ant"

<path id="project.classpath"> 
    <pathelement path="build/classes" /> 
</path> 

mit einem neuen path=module/lib. So dass das Ergebnis gleichwertig ist:

<path id="project.classpath"> 
    <pathelement path="build/classes" /> 
    <pathelement path="module/lib" /> 
</path> 

Antwort

0

Sie können einen vorhandenen Pfad direkt nicht verlängern, wenn Sie so etwas wie dies versuchen:

<path id="project.classpath"> 
    <pathelement path="build/classes" /> 
</path> 

<path id="project.classpath"> 
    <pathelement path="${ant.refid:project.classpath}" /> 
    <pathelement path="module1/lib" /> 
</path> 

Es wird aufgrund einer „Zirkularität“ fail, wo Sie versuche, gleichzeitig den Pfad zu lesen und zu setzen.

Sie können tun, was Sie wollen, indem Sie einen zusätzlichen Schritt hinzufügen, um den Kreis zu durchbrechen. Vor jeder Einstellung des Pfades, speichern Sie den aktuellen Wert in einer <string> Ressource:

<path id="cp"> 
    <pathelement path="build/classes" /> 
</path> 
<echo message="${ant.refid:cp}" /> 

<string id="cps" value="${toString:cp}" /> 
<path id="cp"> 
    <pathelement path="${ant.refid:cps}" /> 
    <pathelement path="module1/lib" /> 
</path> 
<echo message="${ant.refid:cp}" /> 

<string id="cps" value="${toString:cp}" /> 
<path id="cp"> 
    <pathelement path="${ant.refid:cps}" /> 
    <pathelement path="module2/lib" /> 
</path> 
<echo message="${ant.refid:cp}" /> 

Renditen etwas wie dies bei der Ausführung:

[echo] /ant/path/build/classes 
[echo] /ant/path/build/classes:/ant/path/module1/lib 
[echo] /ant/path/build/classes:/ant/path/module1/lib:/ant/path/module2/lib 

Sie sind die id auf einen anderen Pfad erneut die Zuordnung jedes Mal . Normalerweise ist dies eine schlechte Idee, da Sie nicht sicher sein können, welcher Pfad an jedem Punkt des Builds verwendet wurde: Verwenden Sie also vorsichtig.