Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ant vs Phing

Parola chiave "automatizzare"

  • Login to see the comments

Ant vs Phing

  1. 1. Ant vs Phingparola chiave automatizzare
  2. 2. Ego slide • Manuel “Kea” Baldassarri • Senior Developer in Ideato • PHP developer dal 1992 • Marito e Padre • mb@ideato.it twitter: k3a • flickr: kea42 slideshare: kea42http://phpday.it #phpday @k3a
  3. 3. Automatehttp://phpday.it #phpday @k3a
  4. 4. ? Te stohttp://phpday.it #phpday @k3a
  5. 5. Build automation software http://en.wikipedia.org/wiki/List_of_build_automation_softwarehttp://phpday.it #phpday @k3a
  6. 6. GNU makehttp://phpday.it #phpday @k3a
  7. 7. Ant • Ant is kind of GNU make • Ant is a Java library and command-line tool • Ant is Open Source, maintained by Apache • Ant is cross platform and portable • Ant is well suited to a large number of automation and scripting taskshttp://phpday.it #phpday @k3a
  8. 8. Phing • PHing Is Not GNU make • Its a PHP project build system or build tool based on Apache Anthttp://phpday.it #phpday @k3a
  9. 9. Installation Ant • Apt-get o Yum • Donwload binary file and setup the env • SVN + Build • Requires JRE 1.4http://phpday.it #phpday @k3a
  10. 10. Installation Phing • PEAR • Donwload binary file and setup the env • SVN • Requires PHP 5.2http://phpday.it #phpday @k3a
  11. 11. http://phpday.it #phpday @k3a
  12. 12. Phing and Jenkinshttp://phpday.it #phpday @k3a
  13. 13. Ant and Jenkinshttp://phpday.it #phpday @k3a
  14. 14. http://phpday.it #phpday @k3a
  15. 15. Ant Phing Netbeans Plugin No Eclipse Plugin wip Built-in* Zend Studio Run cmd Textmate Bundle** Bundle** phpStorm No Built-in*** Komodo Run cmd Run cmdhttp://phpday.it #phpday @k3a
  16. 16. How they work • XML configuration file • Project, Target, Task, Property, Typehttp://phpday.it #phpday @k3a
  17. 17. http://phpday.it #phpday @k3a
  18. 18. project <?xml version="1.0" ?> <project name="TestProject" basedir="." default="main"> <!-- Everything else goes here --> </project>http://phpday.it #phpday @k3a
  19. 19. target <target name="main"> <!-- everything else goes here --> </target>http://phpday.it #phpday @k3a
  20. 20. target <target name="t1">...</target> <target name="t2">...</target> <target name="main" depends="t1,t2"> ... </target>http://phpday.it #phpday @k3a
  21. 21. target <target name="t1" depends="t3">...</target> <target name="t2" depends="t3">...</target> <target name="t3">...</target> <target name="t4" depends="t1,t2"> ... </target>http://phpday.it #phpday @k3a
  22. 22. Tasks • Archive • Logging • Audit/Coverage • Mail • Deployment • Remote • Documentation • Versioning • File • Testinghttp://phpday.it #phpday @k3a
  23. 23. Useful tasks • scp • ssh (phing), sshexec (ant) • ftpdeploy (phing), ftp (ant) • tar (gzip, bzip2), zip • git*, svn*, cvshttp://phpday.it #phpday @k3a
  24. 24. Useful Phing tasks • PHPUnit • JsLint, JsMin • PHPDocumentor • XMLLint • PHPDepend • PHPLint • PHPMD • Tidy • PHPCPD • S3http://phpday.it #phpday @k3a
  25. 25. ExecTask ANT <exec executable="ls"> <arg value="-l"/> <arg value="/tmp"/> </exec> PHING <exec command="ls -l /tmp" />http://phpday.it #phpday @k3a
  26. 26. property Build.xml <property name="db.name" value="phpday" /> <property name="db.user" value="k3a" /> <property name="db.port" value="3306" /> build.properties file db.name = phpday db.user = k3a db.port = 3306 <property file=build.properties />http://phpday.it #phpday @k3a
  27. 27. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant uno: [echo] Chi sono: iohttp://phpday.it #phpday @k3a
  28. 28. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant -Dchi_sono=phpDay uno: [echo] Chi sono: phpDayhttp://phpday.it #phpday @k3a
  29. 29. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <property name="chi_sono" value="voi" /> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant uno: [echo] Chi sono: iohttp://phpday.it #phpday @k3a
  30. 30. fileset <project> <fileset dir="." id="foo"> <include name="*.php" /> </fileset> <target name="uno" > <copy todir="/tmp"> <fileset refid="foo" /> </copy> </target> </project>http://phpday.it #phpday @k3a
  31. 31. fileset <fileset dir="/tmp" id="fileset1"> <include name="dir1/file.txt" /> <include name="dir2/**" /> <exclude name="dir2/**/i*.php" /> </fileset>http://phpday.it #phpday @k3a
  32. 32. fileset <scp todir="user:password@somehost:/home/chuck"> <fileset dir="src_dir"> <include name="**/*.java"/> </fileset> </scp> <scp file="myfile.txt" todir="user@somehost:/home/chuck" keyfile="${user.home}/.ssh/id_dsa" passphrase="my extremely secret passphrase" />http://phpday.it #phpday @k3a
  33. 33. PHP Project Wizard (PPW) ppw --source src --tests tests --name myproject PHP Project Wizard (PPW) 1.0.4 by Sebastian Bergmann. Wrote build script for Apache Ant to ./build.xml Wrote configuration for PHPUnit to ./phpunit.xml.disthttp://phpday.it #phpday @k3a
  34. 34. build.xml <target name="parallelTasks"> <parallel threadCount="2"> <sequential> <antcall target="pdepend"/> <antcall target="phpmd"/> </sequential> <antcall target="phpcpd"/> <antcall target="phpcs"/> <antcall target="phpdoc"/> <antcall target="phploc"/> </parallel> </target>http://phpday.it #phpday @k3a
  35. 35. build.xml <target name="phpmd" description="Generate pmd.xml PHPMD"> <exec executable="phpmd"> <arg line="${source} xml codesize,design,naming,unusedcode --reportfile ${basedir}/build/logs/pmd.xml" /> </exec> </target>http://phpday.it #phpday @k3a
  36. 36. Conclusions 42http://phpday.it #phpday @k3a
  37. 37. ? Te stohttp://phpday.it #phpday @k3a
  38. 38. Lasciate un feedback! http://joind.in/2999http://phpday.it #phpday @k3a
  39. 39. Riferimenti • Apache Ant: http://ant.apache.org/ • Phing: http://www.phing.info/trac/ • phpunit, ppw, phpcpd, phploc... https://github.com/sebastianbergmann • phpmd: http://phpmd.org • phpdepend: http://pdepend.org/ • Extending phing: http://www.phing.info/docs/guide/ current/chapters/ExtendingPhing.htmlhttp://phpday.it #phpday @k3a

×