Facebook
Twitter
Google+
Kommentare
8
Willkommen bei "the web hates me". Mittlerweile hat unser Team ein tolles neues Monitoringtool für Agenturen gelauncht. Unter dem Namen koality.io haben wir einen Service geschaffen, der er Agenturen ermöglicht mit sehr geringen Kosten alle Ihre Webseiten zu überwachen.

Ant Skripte – Properties

Vor ein paar Tagen hatte ich ja versprochen, dass ich noch einen zweiten Teil zum Thema Ant-Skripte schreiben will. Und welch Überraschung, hier ist er! Das Gute ist, dass mein Wissen über diese Technologie noch genau für einen Beitrag reicht. Also los.

Wir haben ja letztes mal darüber geredet, wie man ein einfaches Skript anlegt. Dieses Skript, ob sinnvoll oder nicht, hat das Erstellen einer PHPDoc-Dokumentation (ist das doppelgemoppelt?) angestoßen. Das Skript war recht einfach, damit man die Syntax versteht.  – Vielleicht erstelle ich einmal eine Sammlung mit den Snippets, die ich so verwende (ist auf jeden Fall nützlich, zumindest für mich). – So weiter geht’s. In vielen Fällen hat man mehrere Projekte die man bauen will. Zum Beispiel ein Hauptprojekt und eine Bibliothek, kann ja auch sein, dass jedes Plugin als eigenes Projekt gesehen wird (und auch gesehen werden sollte). Jetzt würde man also in build.xml den selben Code reinbauen, so dass überall eine PHPDoc gebaut wird. Als Freunde der  Objektorientierung sind wir natürlich darauf versessen keine Redundanz in unserem Code zu haben und damit auch nicht in unseren Skripten. Versuchen wir das also aufzulösen und sauber hin zu bekommen.

Wir erinnern uns noch an das alte Skript. Nein? Also hier wäre es nochmal für die, die ein mieses Gedächtnis haben:

<project name="phpdoc" default="build" basedir=".."> <target name="phpdoc"> <echo message="Creating PHPDoc" /> <mkdir dir="phpdoc" /> <exec dir="${basedir}" executable="phpdoc"> <arg line="--directory ${basedir}/path/to/sources} --quiet on --undocumentedelements on --title 'phm-Dokumentation' --sourcecode on --output HTML:Smarty:PHP --target phpdoc" /> </exec> </target>
<target name="build" depends="phpdoc" />
</project>

Jetzt gibt es zwei Dinge, die man verändern will. Der path/to/source sollte irgendwie parametrisierbar sein und eigentlich sollte das ganze Skript ausgelagert sein und man möchte es einfach einbinden. Kein Problem, denn dafür gibt es zwei Tags, die ihr verwenden könnt. Fangen wir mit der Parametrisierung an. In Ant kann man ganz einfach Variablen einführen und diese mit einem Wert füllen über das Property Tag. Dies würde dann zum Beispiel wie folgt aussehen:

<property name="sourcePath" value="/path/to/sources"/>

Jetzt kann man mit ${sourcePath} auf diese Variable zugreifen. In unserem Fall würde die Zeile im Skript jetzt so aussehen:

<arg line="--directory ${basedir}${sourcePath} />

So das erste Problem wäre hiermit gelöst. Unsere Funktion hat jetzt keine Abhängigkeit mehr zum Projekt. Als zweites lagern wir nun den Code aus. Dafür wurde das import Tag erfunden. Mit diesem Element kann man ganz einfach andere XML-Dateien inkludieren.  Jetzt schnell das Tag, damit ihr nicht länger warten müsst:

<import file="/path/to/my/script/phpdoc_build.xml" />

Wie ihr sicher schon ahnt, müssen wir außerdem den Inhalt unseres Skriptes in eine Datei namens phpdoc_build.xml kopieren. Das würde dann ungefähr so aussehen:

<project name="phpdoc" default="build" basedir=".."> <target name="phpdoc"> <echo message="Creating PHPDoc" /> <mkdir dir="phpdoc" /> <exec dir="${basedir}" executable="phpdoc"> <arg line="--directory ${basedir}${sourcePath} --quiet on --undocumentedelements on --title 'phm-Dokumentation' --sourcecode on --output HTML:Smarty:PHP --target phpdoc" /> </exec> </target>
<target name="build" depends="phpdoc" /> </project>

Viel muss nun nicht mehr getan werden. Unsere ursprüngliche build.xml Datei noch abspecken und wir sind fertig. Die hat nämlich jetzt eine stolze Große von 4 Zeilen.

<project name="project1" default="build" basedir="..">
  <property name="sourcePath" value="/path/to/sources" />
  <import file="/path/to/my/script/phpdoc_build.xml" />
</project>

Einen Schritt könnte man noch weitergehen und ein Propertyfile erstellen, aber das erkläre ich euch ein ander mal. War also am Anfang gelogen, als ich gesagt hab, dass ich genau für einen Artikel noch Wissen habe. Ätsch. Naja, ist mir auch erst jetzt wieder eingefallen, war also keine Absicht.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

8 Comments

  1. @Jörg: Danke ist behoben.
    @Ulf: Da bin ich wirklich überfragt, bis jetzt musste ich noch nicht in Skripten rechnen, aber so wie ich ant einschätze gibt es auch da eine Möglichkeit.

    Reply
  2. Edit: Hmp, komischer XSS-Parser…

    Das sollte oben stehen:
    ‚property name=“ten“ value=“10″‚
    ‚property name=“nine“ value=“${ten}-1″‚

    @Nils
    Kannst du die anderen Kommentare löschen, musste ja die Stärke des XSS-Parsers testen…

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen