am 9. August 2010
Nachdem mein Artikel über JavaScript-Komprimierung so bombig angekommen ist wollen wir heute mal wieder ein wenig über was diskutieren, bei dem es kaum eine andere Meinung geben kann. Eigentlich erkläre ich nur ein paar Fakten und stelle euch ein Tool vor. Viele von euch werden es schon mal gehört haben, wie viele es tatsächlich verwenden weiß ich leider nicht. Auf jeden Fall geht es um das Build Tool ant.
Der kleine Helfer stammt aus dem Java-Umfeld. Zumindest kam er damals dafür auf. Schon lange haben sich viele Programmiersprachen an dieses Tool rangemacht. Vielleicht werden sich jetzt ein paar Leute fragen, wofür man ein Build-Skript im PHP-Geschäfft braucht. Man baut ja schließlich nichts. Trotzdem kann man das gebrauchen, auch in einer interpretierten Welt.
Viele von euch werden ein Continuous Integration System verwenden. Vielleicht kennt man von dort ant. In vielen CI-Lösungen ist dies nämlich die Standard-Lösung für Projekte. Was kann in einem Bau denn zum Beispiel passieren? Also bei uns haben wir build-skripe die sich um viele Dinge kümmern. Ein paar möchte ich hier auszählen.
- PHP_CodeSniffer. Bei jedem Commit will ich, dass der CodeSniffer ohne Fehler durchläuft
- PHP lint. Die Sourcen sollten keine Sytaxfehler beinhelten
- PHPUnit. Meine Unit Tests sollten durchlaufen
- QUnit. Meine JavaSkript Unit Tests sollten auch durchlaufen
- PHPDoc. Meine Doku soll erstellt und an den richtigen Ort kopiert werden
Jetzt könnte ich natürlich ein Shell-Skript schreiben, dass all diese Dinge ausführt. Will ich aber nicht, denn das Apache-Projekt kann das viel geschmeidiger und wie ich finde viel intuitiver. Schauen wir uns doch einfach so ein Skript an, bevor ich noch mehr erzähle, was niemanden interessiert.
<project name="phpdoc" default="build" basedir="..">
<target name="phpdoc">
<echo message="Creating PHPDoc" />
<mkdir dir="phpdoc" />
<exec dir="${basedir}" executable="/app1/cmcwork/bin/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>
Ich würde mal sagen, dass Skript erklärt sich von selbst. Allumschließend gibt es immer das Projekt, das gruppiert die einzelnen Tasks, die aufgerufen werden können. Diese Tasks nennen sich übrigens Targets im Ant-Jargon. Im Projekt kann ich dann noch einen default Task angeben, der aufgerufen wird, wenn ich mein ant Skript ohne ein explizites Target aufrufe.
Ich habe hier bewusst ein Beispiel ausgewählt, dass jeder einfach so lesen kann. Natürlich gibt es noch viele Features, die aus diesem kurzem Snippet nicht klar werden, aber für den ersten Einblick reicht es wohl. Da fällt mir gerade ein, dass ja noch was fehlt. Wie rufe ich das ganze denn eigentlich auf? Simpler könnte es nicht sein.
Ihr speichert das Skript unter build.xml und gebt auf der Kommandozeile ant ein. Fertig. Den Rest macht das Tool von selbst. Im besten Fall ist jetzt bereits eure Dokumentation erstellt.
Diese oder nächste Woche werde ich noch einen Beitrag nachreichen, der erklärt, wie man mit Properties umgeht und auch Fallentscheidungen einbaut. Aber ich denke es reicht für heute erstmal.