Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

CodeIgniter Ant Scripting

on

  • 2,798 views

 

Statistics

Views

Total Views
2,798
Views on SlideShare
2,476
Embed Views
322

Actions

Likes
0
Downloads
15
Comments
0

1 Embed 322

http://blog.albert-rosa.com 322

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CodeIgniter Ant Scripting CodeIgniter Ant Scripting Presentation Transcript

  • CodeIgniter
    Ant Scripting
  • Topic
    What is Ant?
    Why use Ant?
    How can we use Ant?
    How to stream development with Ant?
  • What Is Ant?
    Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles.
    Ant is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.
  • So If Ant is Java why do we want to use it for PHP
    Well Ideally Ant was used to stream line build and compilation with Java in response to Make.
    With the way Ant is, it can be used in any automation we want as long as all the requirements used in the automation are already installed
    We can’t use something we don’t have ;-)
  • Installing Ant
    Ant can be downloaded from: http://ant.apache.org
    Most Current IDE come with Ant Pre-installed
    My Personal Preference NETBEANS IDE
    Other’s like Eclipse …. (WHY????)
    MAC OS ant is pre-installed, UBUNTU also, but always update ;-) …
  • Ant Task… huh?
    Ant has a ton of task both built in and downloadable.
    Ant Task are “actions” to be done in the Ant Script.
  • Ant Task Buckets:
    Archive Tasks
    Audit/Coverage Tasks
    Compile Tasks
    Deployment Tasks
    Documentation Tasks
    EJB Tasks
    Execution Tasks
    File Tasks
    Java2 Extensions Tasks
    Logging Tasks
    Mail Tasks
    Miscellaneous Tasks
    Pre-process Tasks
    Property Tasks
    Remote Tasks
    SCM Tasks
    Testing Tasks
  • The Ant Build File
    <!-- this is an ant script to build the project and information -->
    <project name=”Demo" default="freshBuild" basedir=".">
    <description>
    This is the ant script to build demo this has the ability to clean the build, create a Code Report, Run Unit Tests and Build Documentation
    </description>
  • Ant Properties…
    <property name="docs" location="docs" />
    <property name="applicationDocs" location="${docs}/application"/>
    <property name="libraryDocs" location="${docs}/library" />
    <property name="reports" location="reports"/>
    <property name="sniffer" location="${reports}/sniffer" />
    <property name="applicationReports" location="${reports}/application" />
    <property name="libraryReports" location="${reports}/library" />
    <property name="build" location="build" />
    <property name="tests" location="tests" />
  • Ant Cleaning…
    <!-- this will create a clean working environment -->
    <target name="clean">
    <echo message="Clearing the folders"/>
    <delete dir="${applicationDocs}"/>
    <delete dir="${libraryDocs}" />
    <delete dir="${reports}" />
    <delete dir="${build}" />
    <echo message="Creating the folders" />
    <mkdir dir="${applicationDocs}" />
    <mkdir dir="${libraryDocs}" />
    <mkdir dir="${reports}" />
    <mkdir dir="${sniffer}" />
    <mkdir dir="${applicationReports}" />
    <mkdir dir="${libraryReports}" />
    <mkdir dir="${build}" />
    </target>
  • Ant Clean Cont….
    <target name="cleanProject">
    <echo message="Clearing the folders"/>
    <delete dir="${applicationDocs}"/>
    <delete dir="${libraryDocs}" />
    <delete dir="${reports}" />
    <delete dir="${build}" />
    </target>
  • Ant Code Sniffing…
    <!-- code sniffer -->
    <target name="codeSniff">
    <echo message="Started Sniffing code" />
    <echo message="Sniffing Library" />
    <exec executable="phpcs" output="${sniffer}/library.sniffer.txt">
    <arg value="${NoteLib}"/>
    <arg value="--standard=ZEND"/>
    <arg value="--report=full" />
    <arg value="-n"/>
    </exec>
    <echo message="Sniffing Application" />
    <exec executable="phpcs" output="${sniffer}/application.sniffer.txt">
    <arg value="${application}" />
    <arg value="--standard=ZEND" />
    <arg value="--report=full" />
    <arg value="-n" />
    </exec>
    <echo message="Finished Sniffing the Code" />
    </target>
  • Ant Documenting …
    <!-- PHP DOCUMENTATION -->
    <target name="document">
    <echo message="Started Documenting the code" />
    <echo message="Documenting the Application" />
    <exec executable="phpdoc" output="${docs}/application.doc.result.txt">
    <arg line="
    --target ${applicationDocs}
    --directory ${application}
    --title 'Note In A Bottle Application Documentation'
    --undocumentedelements on
    -i *.phtml
    --defaultpackagename 'NoteInBottleApp'
    "/>
    </exec>
  • Ant Documenting cont…
    <echo message="Documenting the Application's Library" />
    <exec executable="phpdoc" output="${docs}/application.doc.result.txt">
    <arg line="
    --target ${libraryDocs}
    --directory ${NoteLib}
    --title 'Note In A Bottle Library Documentation'
    --undocumentedelements on
    --defaultpackagename 'NoteInBottle'
    "/>
    </exec>
    <echo message="Finished Documenting the code" />
    </target>
  • Ant Fresh Build….
    <target name="freshBuild" depends="clean, codeSniff, unitTesting, document”>
    </target>
  • Ant Copy to Server…
    <target name="copyToTestServer">
    <exec executable="cp" output="${docs}/cp.result.txt">
    <arg line="
    -R
    /Users/albertrosa/Sites/Demo/ /Volumes/www/Demo/
    "/>
    </exec>
    <echo message="copied"/>
    </target>
  • UMMM…. Ok but how does it work…
    So you see how the ant xml file looks, you know the buckets that are included with Ant and you have an idea of how you want your build to go …. SO how do you use it?
    Simple… in your Terminal / command prompt / console navigate to the build file ohh wait I didn’t tell you where the build file should go huh…. Well I always place it at the root of the site so all my paths are relative to that root.
  • But really now how to build it….
    Once you have navigated to the desired location all that is left to do is run the command as follows
    ant <target name>
    Yep that’s all … so each target is an “task” you can do. But recall the freshBuild target .. That had depends as an attribute. Well those depends are all ran when you execute “ant freshBuild”
  • Basic errors most commonly found
    Ant depends orders – if some targets need something to happen first that should happen before that task is executed
    You are using a ant task that isn’t installed
    You action is producing an error and causes the execution to terminate
    You run out of memory :-D rare but possible on many large scale projects.
  • THANKS
    Thanks go to ROKKAN for providing us with the Conference space.
  • General Info
    My Email: albert@albert-rosa.com
    AIM: albertrosa2000
    Meetup: www.meetup.com/codeigniter/
    Rokkan: www.rokkan.com
  • Sources
    http://ant.apache.org/