Toon posts:

[Ant] Path in property "normaliseren"

Pagina: 1
Acties:

Onderwerpen


  • X-Lars
  • Registratie: januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Mijn project heeft een Ant build script met een build.properties bestand:

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]


  • X-Lars
  • Registratie: januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
*kick*

Niemand hier mee te maken gehad? Ik heb uiteindelijk maar gewoon de patterns voor de fileset hard-coded (of in een aparte property gezet). Maar ik vind het veel mooier als je die paths en patterns a.h.w. niet apart hoeft te behandelen, of daar in ieder geval een generieke oplossing voor is.

Kan in ieder geval nog wel eens een macrodef maken die dit voor mij doet.

  • X-Lars
  • Registratie: januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Dan gebruik je dus overal ${src.dir}/${specific.dir}. Dat is inderdaad het alternatief, dank daarvoor. Ik moet nog even aan het idee wennen ;) Maar lijkt me wel een goed plan.


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee