Mijn project heeft een Ant build script met een build.properties bestand:
Nu gebruik ik soms bijv. de pattern.dir property als pattern in een fileset, bijv.:
Deze exclude zal niet matchen op donotcopy.file, omdate er ".." in de value van de property zit. Ik wil die dus normaliseren (zodat elke instantie van ".." eruit wordt gecorrigeerd). Op zich kan dat met bijv.:
Aangezien je een property value niet kunt overschrijven, zou ik dan dus een nieuwe property definiëren. En dat wil je liever niet.
Eigenlijk wil ik de src.pattern.dir property niet onafhankelijk maken van de root.dir, dus ben ik wel gebonden aan relatieve paden (incl. ".."). Zo kan ik zo'n (path) property ook makkelijk voor any purpose gebruiken.
Mijn beste effort so far:
Acceptabel, maar wellicht zijn er meer mensen tegen dit probleem aangelopen? is hier een betere pattern voor?
Edit: ik kom er nu achter dat mijn "best effort" niet eens werkt. Blijkbaar wordt er alleen gematched op relatieve paden in bijv. een copy task
code:
1
2
3
4
5
| root.dir = ${basedir}/..
build.dir = ${root.dir}/build
build.dist.dir = ${root.dir}/build/dist
src.dir = ${root.dir}/src
src.pattern.dir = ${src.dir}/path/to/file |
Nu gebruik ik soms bijv. de pattern.dir property als pattern in een fileset, bijv.:
XML:
1
2
3
4
5
| <copy todir="${build.dist.dir}"> <fileset dir="${src.dir}"> <exclude name="${src.pattern.dir}/donotcopy.file"/> </fileset> </copy> |
Deze exclude zal niet matchen op donotcopy.file, omdate er ".." in de value van de property zit. Ik wil die dus normaliseren (zodat elke instantie van ".." eruit wordt gecorrigeerd). Op zich kan dat met bijv.:
XML:
1
| <property name="src.pattern.dir.normalized" location="${src.pattern.dir}"/> |
Aangezien je een property value niet kunt overschrijven, zou ik dan dus een nieuwe property definiëren. En dat wil je liever niet.
Eigenlijk wil ik de src.pattern.dir property niet onafhankelijk maken van de root.dir, dus ben ik wel gebonden aan relatieve paden (incl. ".."). Zo kan ik zo'n (path) property ook makkelijk voor any purpose gebruiken.
Mijn beste effort so far:
XML:
1
2
3
4
5
6
7
8
| <target> <property name="src.pattern.dir.normalized" location="${src.pattern.dir}"/> <copy todir="${build.dist.dir}"> <fileset dir="${src.dir}"> <exclude name="${src.pattern.dir.normalized}/donotcopy.file"/> </fileset> </copy> </target> |
Acceptabel, maar wellicht zijn er meer mensen tegen dit probleem aangelopen? is hier een betere pattern voor?
Edit: ik kom er nu achter dat mijn "best effort" niet eens werkt. Blijkbaar wordt er alleen gematched op relatieve paden in bijv. een copy task
[ Voor 4% gewijzigd door X-Lars op 19-10-2010 13:02 ]