Als ColdFusion Entwickler und Dreamweaver-Hasser nutze ich Eclipse mit CFEclipse als IDE.
Soweit bin ich bislang auch sehr zufrieden. Einzig das deployment auf die Webserver hat mir garnicht gefallen.
Bei Eclipse läuft das im Prinzip über einen Projekt-Export.
Früher bei ColdFusion-Studio (R.I.P.) konnte man sehr komfortabel verschiedene Deploy-Server als Ziel angeben.
Nun habe ich mir endlich mal die Mühe gemacht und ein wenig in Ant reingeschnuppert. Die vielfältigen Möglichkeiten von Ant übersteigen meine Deploy-Ansprüche bei weitem. Aber trotzdem ist das ein verdammt cooles Tool...
Da ich in meiner lokalen Sandbox entwickle, habe ich im Prinzip 2 mögliche Ziele für den Deploy:
den Staging-Server und das Produktiv-System
Ant beherrscht simple lokale Kopiervorgänge wie auch FTP-Uploads etc.
Nun habe ich ein kleines Ant-Script gebastelt, das den User nach dem gewünschten Deploy-Ziel fragt und anschließend alle geänderten Dateien kopiert. Ja, Ant ist nicht doof und kopiert (im Gegensatz zum Projekt-Export) nur die Dateien, die wirklich kopiert werden müssen.
Hier nun das Script für den Deploy...
Im Prinzip funktioniert das für jedes Projekt, bei dem die Laufwerks-Buchstaben für die jeweiligen Server identisch sind...
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project name="Dev-Deploy" default="" basedir=".">
3 <description>
4 Deploy des Projektes auf die Webserver
5 </description>
6
7 <!-- Aktuellen Projektpfad ermitteln -->
8 <pathconvert pathsep="${file.separator}" property="PackageName">
9 <path id="tempPathName">
10 <pathelement location=""/>
11 </path>
12 <map from="C:\sandboxroot" to=""/>
13 </pathconvert>
14
15 <!-- Pfade setzen -->
16 <property name="local" value="./" />
17 <property name="dev" value="X:${PackageName}" />
18 <property name="live" value="Y:${PackageName}" />
19
20 <!-- Ziel abfragen -->
21 <input message="Deploy auf 1:dev(${dev}) 99:live(${live}) oder 0:abbruch?" validargs="0,1,99" addproperty="auswahl" />
22
23 <!-- Eingabe pr�fen und Zielpfad setzen -->
24 <condition property="target" value="${live}" else="${dev}">
25 <equals arg1="99" arg2="${auswahl}" />
26 </condition>
27 <condition property="do.abort">
28 <equals arg1="0" arg2="${auswahl}" />
29 </condition>
30
31 <!-- Bei 0 Abbruch -->
32 <fail if="do.abort">Deploy abgebrochen</fail>
33
34 <!-- Kopiervorgang mit Ausnahmen -->
35 <copy todir="${target}">
36 <fileset dir="${local}">
37 <exclude name=".project" />
38 <exclude name=".svn" />
39 <exclude name=".settings" />
40 <exclude name="build.xml" />
41 </fileset>
42 </copy>
43
44 <echo message="Projekt wurde auf ${target} kopiert" />
45 </project>