DistributeUpdateCenterWithAnt DE
AutoUpdate Dateien automatisch kopieren
Contributed By; Aljoscha Rittner | Josh
Ursprünglicher Blog-Eintrag: BeanDev: AutoUpdate Dateien automatisch kopieren und BeanDev: AutoUpdateCenter per Ant-Script updaten - Teil II
Einführung
Es ist immer wieder notwendig, das persönliche Update-Center der entwickelten NetBeans Platform Anwendung auf einen Server zu übertragen. Dieses Tutorial soll zeigen, wie man dieses Aktualisieren automatisieren kann.
Das Build System mit Ant ist so vielfältig zu konfigurieren, da klappt auch ein FTP-Upload der AutoUpdate-Dateien auf den eigenen Server.
Anfang und Projekteinrichtung
Zunächst muss man die Apache Commons Net in den Ant-Classpath hinzufügen. Das geht seit NetBeans 6.0 sehr leicht über den Options-Dialog. Die Binary-Versions von commons-net extrahieren und in den gewünschten Pfad kopieren.
Von nun an hat man die zusätzlichen Tasks, die in commons-net-x.x.x.jar definiert sind. Ein Task davon ist ftp.
Das Build-Script erstellen
Nun das Build-Script der gewünschten NetBeans Application Platform öffnen (findet sich unter Important Files) und folgendes Target hinzufügen:
<target name="distribute-dev" description="Distri to developers"> <tstamp/> <ftp server="ftp.myserver.de" userid="thebuilduser" password="theuserpwd" remotedir="/updates/dev/myapp" verbose="true" passive="true"> <fileset dir="build/updates" casesensitive="yes"> <include name="**/*.nbm"/> <include name="**/updates.xml"/> </fileset> </ftp> </target>
Kennwort-Speicherung in den private.properties
Da das Build-Script aber auch versioniert wird und es ggf. nicht erwünscht ist, dass irgendwo in einem Repository das Kennwort rumschwirrt, sollte man eine Konstante in den private properties dafür anlegen. Diese Eigenschaften findet man in der Files-Ansicht des Projektes unter nbproject/private/private.properties. Dort einfach folgende Zeile hinzufügen:
dev.ftp.password=myv3rys3cr3tpassw0rd
und das Target des Ant-Scriptes anpassen:
password="${dev.ftp.password}"
(Übrigens hilft hier das Autovervollständigen der NetBeans IDE)
Kennwort-Abfrage per Dialog
Wenn man das Kennwort gar nicht speichern will, gibt es den input-Task, mit dem das Ant-Script stoppt, ein Abfrage-Dialog startet und damit das Kennwort setzen kann.
Man braucht nur drei Zeilen dem Build-Script hizuzufügen und das Target distribute-dev bei depends anpassen:
<target name="-distribute-prompt-for-ftppass" unless="dev.ftp.password"> <input addproperty="dev.ftp.password" message="Kennwort für das Update-Center:"/> </target> <target name="distribute-dev" depends="-distribute-prompt-for-ftppass" description="Distributes to developers and testers">
Das war es auch schon. Wenn das Kennwort nicht in einer Property-Datei hinterlegt wurde, kommt der Dialog. Bei richtig hinterlegtem Kennwort oder bei korrekter Eingabe wird dann alles notwendige auf den Server kopiert.
Man sollte nur beachten, dass die Kennworteingabe nicht durch ein Password-Field erfolgt. D.h. bei der Eingabe sieht man das Kennwort!
Erwartetes Resultat
Jetzt muss man zunächst im Kontext-Menü der Application "Create NBMs" aufrufen, damit alle Dateien im build/updates Ordner erzeugt werden.
Nun kann man mit der rechten Maustaste in der Projects-Ansicht auf das Build-Script klicken und Run Target -> distribute-dev aufrufen.
Wenn alle Daten passen, werden die Dateien auf den ftp-Server kopiert.
Möchte man sich den Schritt mit dem Menüaufruf von "Create NBMs" sparen, trägt man in das Target einfach die Abhängigkeit zu dem nbms-Target ein:
<target name="distribute-dev" depends="nbms" description="Distri to developers">
Somit erzeugt distribute-dev zunächst immer die aktuellen Updater-Dateien und kopiert sie dann auf den Server.