| | | | |
| |||||||
| Off-Topic Diskussionen Mach mal Pause vom Programmieren! |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Also mir wäre das zu umständlich im Code die Pfade manuell drin zu haben und im Code eventuell was ändern zu müssen, egal ob neue version, Pfad ändert sich (Übertragen aufs Test/Produktiv-System) oder was auch immer. Mein Weg ist folgender (unter Linux): Ich habe einen Ordner wo alle Libraries in allen verwendeten Versionen (Zend Framework, Doctrine, HtmlPurifier ... ) drin sind und dann im Projekt passende ant-basierte Build-scripte die mir abhängig von der in der Properties-Datei angegeben Version dann automatisch ins library-Verzeichnis symlinkt. Code: <?xml version="1.0" encoding="UTF-8"?>
<project name="Foo" basedir=".">
<property name="env.local.libPath" value="/www/libs/" />
<property name="env.local.libVersion.Zend" value="1.10.0" />
<property name="env.local.libVersion.ZendX" value="1.10.0" />
<property name="env.local.libVersion.Doctrine" value="1.2.1" />
<property name="env.local.libVersion.HTMLPurifier" value="4.0.0" />
<property name="env.local.libVersion.ezComponents" value="2009.1.2" />
<target name="symlinkLibrary">
<symlink link="library/Zend" resource="${env.local.libPath}zendframework/${env.local.libVersion.Zend}/library/Zend" overwrite="true" />
<symlink link="library/ZendX" resource="${env.local.libPath}zendframework/${env.local.libVersion.Zend}/library/ZendX" overwrite="true" />
<symlink link="library/Doctrine.php" resource="${env.local.libPath}doctrine/${env.local.libVersion.Doctrine}/lib/Doctrine.php" overwrite="true" />
<symlink link="library/Doctrine" resource="${env.local.libPath}doctrine/${env.local.libVersion.Doctrine}/lib/Doctrine" overwrite="true" />
<symlink link="library/ezc" resource="${env.local.libPath}ezComponents/${env.local.libVersion.ezComponents}/" overwrite="true" />
<symlink link="library/HTMLPurifier.php" resource="${env.local.libPath}htmlpurifier/${env.local.libVersion.HTMLPurifier}/library/HTMLPurifier.php" overwrite="true" />
<symlink link="library/HTMLPurifier" resource="${env.local.libPath}htmlpurifier/${env.local.libVersion.HTMLPurifier}/library/HTMLPurifier" overwrite="true" />
</target>
</project>
Code: <property file="env.properties" /> ANT integriert sich auch schön in Netbeans (Falls man die komplett-Version von Netbeans hat oder das ANT-Plugin via Plugin-Manager nachinstalliert hat), dass man dort direkt nur die Properties-Datei verändern kann und direkt den Symlink-Task via rechtsklick auf die build.xml oder den Task aufrufen kann. So kann ich schnell und einfach zwischen verschiedenen Versionen wechseln, hab keinen overhead durch Kopien und APC erkennt sogar via symlink referenzierte Dateien und speichert sie dann nicht doppelt in seinem Cache. [Und kann das ganze auch recht einfach automatisieren wenn ich ein projekt mit verschiedenen versionen einer Lib testen lassen will] Das Lib-Verzeichnis synchronisiere ich via VCS zwischen meinem Server und meiner Entwicklungsumgebung und kann dann über ant direkt immer die version der verwendeten Libs wechseln und bin nicht auf Kopien angewiesen. Unter Windows wirst du das mit ANT nicht so direkt machen können, aber du kannst ja mal abhängig von deinem verwendeten Windows dir das hier anschauen: Symbolische Verknüpfung – Wikipedia da steht beschrieben welche Versionen von Windows in welcher Form Symlinks unterstützen und wie man damit welche anlegt, dann kann man sich entweder eine .bat-Datei basteln oder einen exec-Task bei ANT verwenden. Und ANT kann man dann auch noch für tests, deployment und solche Sachen verwenden, ich hab mir z.b. für manche Projekte tasks angelegt die mir datenbank-dumps vom produktiv-system holen und lokal einspielen, backups erstellen, den aktuellen code aufs produktiv-system übertragen und soweiter. Andere Beispiele wofür man ant nutzen kann: z.b. lint-check für php, ob keine parse-error in irgndwelchen Dateien sind (z.b. nach nem großen Refactoring/ner großen bösen suchen/ersetzen-Orgie oder bevor die unittests laufen) PHP Syntax-Check Lint Ant Task - Codeschnipsel Entfernen von leerzeichen und tabs hinter dem ende der Zeile (linux/unix only): Remove Trailing Spaces sed-basierter Ant Task - Codeschnipsel Oder man kann auch tools wie PHP_CodeSniffer und ähnliches integrieren für Quellcode-Analyse, Metriken und soweiter. Zitat:
Subversion: Properties git: gitignore(5) bazaar: Bazaar-NG Tutorial mercurial: hgignore(5): syntax for Mercurial ignore files - Linux man page Von der Sache mit dem globalen und lokalen Include-Pfad würde ich abraten, das ist wie ich finde extrem unflexibel, weil du dann projekt-übergreifend/projekt-bezogen immer alle Libs drin hast und auf eine Version festgelegt bist. Global änderst du was und zack, gilt es für alle Projekte obwohl sie vielleicht auf eine ältere oder neuer Versionen aufbauen. Ausserdem bringen dich die Include-Pfade von Netbeans in keiner Weise weiter was PHP angeht, weil das nur für Netbeans intern ne Info ist wo er nach Code sucht den er für die Code-Completion und so nutzt, sprich nur weil man etwas in den Include-Pfad des Projektes setzt, ist es dann noch nicht im Include-Pfad von PHP und das sollte am besten automatisch synchronisiert sein. Sonst passiert es einem schnell, dass man in der Code-Completion eine andere Version verwendet, als man in Wirklichkeit im Code eingebunden hat. Wenn möglich sollte man das verbinden, dass diese Zuständigkeit ausserhalb von Netbeans liegt und automatisiert ist.
__________________ robo47.net - Blog, Codeschnipsel und mehr | | |
| | |
| | ||||||
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Out-of-the-box hat ANT z.b. Unterstütztung für ssh, aber die passende Lib die das regelt fehlt, hier kann man weitere JAR's angeben oder Verzeichnisse wo diese JAR's liegen, braucht dich also erstmal nicht zu interessieren und es ist meiner Meinung sinnvoller die dann einfach im Standard-ANT-Verzeichnis unterzubringen, dann findet ANT die auch wenn du es nicht über Netbeans startest. Zitat:
Zitat:
Wie viele build.xml auf wie viele Ordner verteilt du hast ist deine Sache ![]() Du kannst deine Tasks warum auch immer über mehrere verteilt haben, ich hab üblicherweise alle Tasks in einer build.xml die im root-verzeichnis des projektes liegt, weil ich sehr oft ant auch auf der Konsole nutze, nicht nur via Netbeans. Zitat:
Scheint wohl eher dazu zu sein nen Buildjob für nen CI-Server wie Hudson zu erstellen um ein Continuous-Integration-Server zu nutzen. ANT macht das nicht alles automatisch irgendwie, du musst dir schon einen passenden Task erstellen der das für dich übernimmt. Siehe Overview of Ant Tasks z.b. Mkdir Task zum Verzeichnis erstellen Copy Task zum Dateien reinkopieren was du übertragen willst FTP Task Um die Dateien via FTP zu übertragen Damit musst du dir dann in der build.xml deinen Task zusammenbasteln. Zitat:
Wenn du einen Task fürs Deployment schreibst hast du ja irgendwo ein property das dir den Pfad zu dem Verzeichnis nennt wo dein ZF liegt. Entweder dein deployment sieht so aus, dass du in einem verzeichnis (z.b. deployment" alles zusammenkopierst was du brauchst (code deiner applikation, bibliotheken, configs) und das dann in einem überträgst oder du hast mehrere ftp-tasks in deinem deployment task die z.b. erst deine Libs, dann deine App und soweiter hochlädt. Abhängig davon wohin du deployst (Anderer Rechner via gemoutetem Netzlaufwerk, via FTP, via SCP/SSH) und wie die Gegenseite aussieht, kann der ganze ablauf ganz anders sein. Wenn ich via scp/ssh was deploye erstelle ich lokal ein Verzeichnis wo alles drin ist was ich brauche, dann wird zuerst eine "Seite ist momentan nicht erreichbar"-Seite (mit 503 Service Temporarily Unavailable-Header und soweiter) ins htdocs-Verzeichnis hochgeladen um den momentan Betrieb zu unterbrechen und auch SUMAs und Co passend zu befriedigen (lässt sich auch via .htaccess oder ähnlichem erreichen. Lokal erstelle ich ein fertiges tar.gz/zip-Archiv mit allem was ich online brauche und in der passenden Struktur, das lade ich dann hoch und entpacke es in ein verzeichnis, sobald das hochladen + entpacken fertig ist, verschiebe ich den Kram an die Richtige stelle oder symlinke ihn passend, sonst hat man, gerade wenn es mehr Code ist, ein Zeit lang eventuell eine fehlerhafte Seite.
__________________ robo47.net - Blog, Codeschnipsel und mehr | | |||||
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Wow, was für komplexe Antworten, Robo, und ich kann nicht mal bewerten gerade. Unter Windows müsste dem Problem theoretisch mit Junctions beizukommen sein. Was ich zur Zeit mache (ähnliche Baustelle) ist, Projekte auf eine eigenes virtuelles Laufwerk zu mappen (subst), sicher könnte man dort dann zusätzliche Libraries mit Junctions auf diesem Laufwerk in Ordner abbilden.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |
| Benutzer Registriert seit: 25.08.2009
Beiträge: 80
PHP-Kenntnisse: Anfänger ![]() | Tach Ihr beiden, wieder ein paar Stunden später und wieder einen Schritt weiter. Zunächst habe ich mich mal um das Einbinden der Libraries in Netbeans gekümmert. Ich habe mir meinen Bibliothekenordner auf dem Laufwerk E erstellt und zunächst mal die Zendbibliothek reingepackt: E:\Library\Zend Danach habe ich die Eingabeaufforderung als Administrator aufgerufen und eine symbolische Verknüpfung angelegt: Code: mklink /d "E:\Projekt\Library" "E:\Library" Zu Ant: Ich habe mir, wie beschrieben, Ant als .zip - Archiv runtergeladen, auf C:/ entpackt und in "ant" umbenannt. Die Umgebungsvariable path bearbeitet und ;C:\ant\bin hinzugefügt. Das Testen mit ant --version und ant -help war ebenfalls erfolgreich. Jetzt habe ich testweise das erste Buildfile erstellt: Code: <project name="roboTest" basedir="."> <!-- Property Definitionen --> <property file="build.properties"/> <!-- Target Definitionen --> <target name="target1" description="Die Targets bestehen aus einer Abfolge mit Optionen und Argumenten"/> </project> Mit ant -projecthelp teste ich: Main targets: Traget1 Die Targets bestehen…. Läuft also… Mit ant target1 teste ich: Target1: Ausgabe ist natürlich noch leer, weil ich ja nur die Beschreibung vergeben habe. Jetzt habe ich mal versucht, wie oben gesagt, die Property Definitionen auszulagern. Ich habe im selben Verzeichnis die Datei build.properties angelegt mit folgendem Inhalt (testweise): Code: <?xml version="1.0" encoding="iso-8859-1"?>
<project name="roboTest" basedir=".">
<!-- Property Definitionen -->
<property name="env.local.libPath" value="E:\libs\" />
<!-- Target Definitionen -->
<target name="symlinkLibrary">
<symlink link="library/Zend" resource="${env.local.libPath}" />
</target>
</project>
Was will/kann ich mit Ant erreichen? Der Vorteil jetzt mit Ant ist, das ich über Targets verschiedene Tasks erstellen kann, zum einen ziehe ich mir alle benötigten und betreffenden Daten in einen Ordner und übertrage sie dann durch einen neuen FTP Task. Ich hoffe, das ich das soweit richtig verstanden habe. Ich werde jetzt mal ein buildfile erstellen, in dem die properties direkt definiert sind und schau erstmal, ob ich das Projekt komplett mit zend in einen Ordner bekomme. Tausend dank schonmal. |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Eine properties-file ist ein von java genutztes ini-ähnliches format und KEINE build.xml-ähnliche datei! Es dient nur dazu Konfigurationen auszulagern, nicht Tasks oder ähnliches. Java-Properties-Datei – Wikipedia um mal mein beispiel von oben aufzugreifen sehe die oben genannte build.xml wenn ich die properties ausgliedere so aus : build.xml: Code: <?xml version="1.0" encoding="UTF-8"?>
<project name="Foo" basedir=".">
<property file="env.properties" />
<target name="symlinkLibrary">
<symlink link="library/Zend" resource="${env.local.libPath}zendframework/${env.local.libVersion.Zend}/library/Zend" overwrite="true" />
<symlink link="library/ZendX" resource="${env.local.libPath}zendframework/${env.local.libVersion.Zend}/library/ZendX" overwrite="true" />
<symlink link="library/Doctrine.php" resource="${env.local.libPath}doctrine/${env.local.libVersion.Doctrine}/lib/Doctrine.php" overwrite="true" />
<symlink link="library/Doctrine" resource="${env.local.libPath}doctrine/${env.local.libVersion.Doctrine}/lib/Doctrine" overwrite="true" />
<symlink link="library/ezc" resource="${env.local.libPath}ezComponents/${env.local.libVersion.ezComponents}/" overwrite="true" />
<symlink link="library/HTMLPurifier.php" resource="${env.local.libPath}htmlpurifier/${env.local.libVersion.HTMLPurifier}/library/HTMLPurifier.php" overwrite="true" />
<symlink link="library/HTMLPurifier" resource="${env.local.libPath}htmlpurifier/${env.local.libVersion.HTMLPurifier}/library/HTMLPurifier" overwrite="true" />
</target>
</project>
Code: env.local.libPath=/www/libs/ env.local.libVersion.Zend=1.10.0 env.local.libVersion.ZendX=1.10.0 env.local.libVersion.Doctrine=1.2.1 env.local.libVersion.HTMLPurifier=4.0.0 env.local.libVersion.ezComponents=2009.1.2
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Benutzer Registriert seit: 25.08.2009
Beiträge: 80
PHP-Kenntnisse: Anfänger ![]() | Ok, das habe ich verstanden. Hat auch schonmal geklappt mit dem Ordner erstellen und mit ant vorbereiten das aufzurufen: Code: <?xml version="1.0" encoding="iso-8859-1"?> <project name="roboTest" basedir="."> <target name="vorbereiten"> <mkdir dir="../build"/> </target> </project> Werde mich jetzt mal mit dem copy todir und dem fileset auseinandersetzen und mich Deinem Code nähern. Wenn ich das alles verstanden habe, versuche ich die properties, die dann ja funktionieren sollten auszulagern. Ich hatte die Properties im Übrigen mit der Dateiendung .properties geschrieben und dennoch wurde sie nicht gefunden. Aber ich werde den Link auch mal durchlesen. |
| | |
| | ||
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Ob das relevant ist weis ich nicht, da ich nicht weis für welche Tasks die eventuell genutzt wird.
__________________ robo47.net - Blog, Codeschnipsel und mehr | | |
| | |
| | |
| Benutzer Registriert seit: 25.08.2009
Beiträge: 80
PHP-Kenntnisse: Anfänger ![]() | Da isser wieder... Hat geklappt. Unter Computer/Eigenschaften/Erweiterte Systemeinstellungen/Erweitert/Umgebungsvariablen neue Systemvariablen erstellen: Name der Variablen: ANT_HOME Wert der Variablen: C:\ant\bin Name der Variablen: JAVA_HOME Wert der Variablen: C:\Program Files\Java\jdk1.6.0_16 Der Systemvariable Path dann noch folgendes hinzufügen: ;%ANT_HOME%;%JAVA_HOME%\bin\java.exe (Windows Vista) Habe den Fehler gemacht und ANT_HOME und JAVA_HOME nicht explizit gesetzt. Fehlermeldung bleibt nun aus. Ich danke Dir soweit Robo - die Umgebung funktioniert und jetzt werde ich mich noch ein wenig in ANT einlesen. Ich markiere diesen Thread mal als erledigt, da die Integration externer Libs ja jetzt funktioniert und die ANT-Geschichte bestimmt ein Paar Tage dauert. Aber echt ne' gute Sache mit der Ameise! |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Sinn von Frameworks? | alessandro | Off-Topic Diskussionen | 45 | 31.12.2009 17:51 |
| DRINGEND: Suche Zend Framework - Coder | jens76 | Beitragsarchiv | 0 | 03.11.2009 11:28 |
| Zend Framework + Smarty + Login | foxtrot | Beitragsarchiv | 0 | 29.10.2009 11:13 |
| [S] Zend Framework Coder | ThisRockZ | Beitragsarchiv | 0 | 14.10.2009 13:14 |
| Kohana Framework / CakePHP / Zend | ramses | PHP-Fortgeschrittene | 6 | 29.09.2009 01:38 |
| Zend Framework: Dekorator für HTMLTag um DijitElement. | #EFEFEF | PHP-Fortgeschrittene | 2 | 30.07.2009 09:25 |
| Release 1.10-RC2 des Adventure PHP Framework (APF) veröffentlicht | dr.e. | Beitragsarchiv | 2 | 21.07.2009 11:22 |
| Entwickler für Zend Framework Applikation gesucht | UdoW | Beitragsarchiv | 0 | 10.05.2009 13:19 |
| Zend Framework | Joe | Off-Topic Diskussionen | 4 | 04.05.2009 20:14 |
| Suche Schüler o.ä. mit Zend Framework Erfahrung -> 200 Euro | mrmojo | Beitragsarchiv | 3 | 10.01.2009 15:38 |
| Zend Studio for Eclipse und Zend Framework | KeKs0r | PHP-Fortgeschrittene | 5 | 15.12.2008 15:10 |
| Zend Framework Und Datei Upload ! | 7Style | PHP Tipps 2008 | 7 | 28.09.2008 00:52 |
| BrickOO :: PHP Framework | Hroudtwolf | Scriptbörse | 14 | 06.05.2008 12:04 |
| Zend Framework | Melchior | PHP-Fortgeschrittene | 29 | 13.03.2008 21:12 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| netbeans zend framework, zend framework netbeans, netbeans zend plugin, netbeans zend, netbeans zend framework einbinden, zend netbeans einbinden, zend netbeans, netbeans php tools integration, zend in netbeans einbinden, zend framework in netbeans einbinden, zend plugin netbeans, netbeans zend framework einrichten, netbeans framework, zend framework in netbeans, netbeans framework einbinden, ant für php betbeans, netbeans zend einbinden, netbeans zend einrichten, zend framework netbeans einbinden, add code folding for php arrays to netbeans xml |