340 likes | 468 Views
ANT on the Wire. Using FTP, Mail, SVN, and VSS tasks (and a bonus task). Your host… Marc Esher. CF since 2000 Java since 2001 Contributor to MXUnit unit testing framework for CF NOT an ANT guru Plug alert: come see us talk about MXUnit and unit testing at Webmaniacs in May!.
E N D
ANT on the Wire Using FTP, Mail, SVN, and VSS tasks (and a bonus task)
Your host… Marc Esher • CF since 2000 • Java since 2001 • Contributor to MXUnit unit testing framework for CF • NOT an ANT guru • Plug alert: come see us talk about MXUnit and unit testing at Webmaniacs in May!
What this is not • A high-level ANT overview • A cursory look at a bunch of neat features • A crash course in basic ANT • The last word on any of these topics
What this is • A “how-to” session; as such, it will be slightly slower-paced than most meetups • A solid look at a few really useful features
Takeaways • Know where to go to download all dependencies for these ANT tasks • Know how to install all dependencies and configure ANT to run these tasks • Run these tasks from Eclipse or command line • Learn by example how to use these tasks for common operations • Learn how to read the ANT documentation for more info on these tasks • Not be afraid to try any of this on your own • Familiar enough with these tasks that a more complicated build file is not overwhelming
Tasks we’ll cover • Email • FTP • SVN (for accessing subversion repository) • VSS (demo how to configure and what the task looks like) • Version numbering using propertyfile
Beginning with the End Putting all these tasks together to: • Check out version.properties file, increment version, use version for zip file name, check it back in • Package app into zip (not covered in pres.) • Run unit tests and email results • Upload zip file to google code (not covered in pres.) • FTP version.properties file to website • Re-init application so it reads that file • FTP test results to website
Let’s go: The ANT manual • http://ant.apache.org/manual/index.html • 3 key sections: • Concepts and Types – explains all about directory concepts (**/ vs */, filesets, etc) and tons of other stuff • Core tasks – all the built-in tasks you can usually use out of the box (with some exceptions) • Optional tasks – stuff you probably have but also are more likely to require downloading additional dependencies • NOTE: tasks requiring dependencies let you know they require dependencies
Our dependencies • FTP needs: commons-oro and commons-net • http://commons.apache.org/downloads/download_net.cgi • http://jakarta.apache.org/site/downloads/downloads_oro.cgi • Mail needs: javamail and activation framework • http://java.sun.com/products/javamail/downloads/index.html • http://java.sun.com/products/javabeans/jaf/downloads/index.html • SVN needs: svnant task • JavaHL: easiest to install Subclipse plugin through Eclipse update site (even if you disable the plugin as soon as you install it!) • http://subclipse.tigris.org/update_1.0.x (we’ll use this in eclipse) • http://subclipse.tigris.org/svnant.html • VSS needs • No jars, but you do need vss client installed on your machine • Eclipse users: Once these are added to your file system, you need to tell ANT about them in Eclipse
Setting up ANT • Assumes you have Eclipse installed • If not, you can download ANT separately and do all of this stuff without Eclipse • Good idea to know how to use ANT outside of eclipse – makes automation easier • For this demonstration, I’ll be using ANT 1.7 that is bundled with Eclipse 3.3
Cont. • Find ANT bin directory. For Eclipse, this is in %eclipse_root%\plugins\org.apache.ant_1.7….\bin • Add ANT bin directory to system environment “path” variable • Run ant –version to get some basic information
Cont. • If you get a “cannot find tools.jar” message, it means ANT’s using the JRE and NOT the JDK. • Only important if you need a compiler (or get annoyed by the tools.jar message) • Install the JDK (if you don’t have it) http://java.sun.com/javase/downloads/index.jsp • Find your JDK’s bin path. Copy and replace the existing java bin directory with the new bin directory in your environment PATH variable
Our build file • Simple build file with test targets • init • testEmail • testFTP • testSVN • testVSS • testVersion • HINT: even for the final build file in your projects, keep these test targets… they’re great for confirming that new folks working on the project are correctly configured
testEmail (core task) • Run and confirm it fails • Add dependencies to ANT lib dir • http://java.sun.com/products/javamail/downloads/index.html • http://java.sun.com/products/javabeans/jaf/downloads/index.html • Run and confirm it fails… no properties set up • (switch to real properties file) • Run in Eclipse • Run at command line
Another Email example • MXUnit build file • runTests
Learn more about mail task • http://ant.apache.org/manual/index.html • Ant tasks – Core Tasks – Mail • You can do all the normal mail stuff • You can attach files to messages • Cool tip: use the messagefile attribute for easier-to-manage html emails
testFTP (optional task) • Run and confirm it fails • Add dependencies to ANT lib dir • http://commons.apache.org/downloads/download_net.cgi • http://jakarta.apache.org/site/downloads/downloads_oro.cgi • Run and confirm it fails (no properties) • Switch to real properties file • Run in Eclipse • Run at command line
A few more FTP examples • MXUnit build file • updatewebsite • publishTestResults
Learn more about FTP task • http://ant.apache.org/manual/index.html • Ant tasks – Optional Tasks – FTP • You can use this to synchronize using the various “time…” attributes • You can control the target directory for put operations
testSVN (the trickiest) • Run and confirm it fails • Install plugin using Update Site • http://subclipse.tigris.org/update_1.0.x • Add dependencies to ANT lib dir • Get at http://subclipse.tigris.org/svnant.html • In Eclipse plugins directory, navigate to the org.tigris.subversion.javahl.win32 directory. Copy that path. • Paste that path into your system’s PATH environment variable • RESTART YOUR COMPUTER
testSVN, cont. • Run and confirm it fails • Add taskdef • Run in eclipse • Run in command line
Another SVN example • MXUnit build file • incrementVersion • tagVersion
testVSS (optional tasks… I’ll be showing vssget) • Run and confirm it fails • Add vss path to environment PATH variable • e.g. C:\Program Files\Microsoft Visual Studio\VSS\win32 • Run and imagine it succeeded
Demo testVSS • Also show the entries from GetLatest.xml
Learn more about VSS tasks • http://ant.apache.org/manual/index.html • Ant tasks – Optional Tasks – Microsoft Visual SourceSafe Tasks • This is a suite of tests… vssget, vsslabel, vsscheckin, vsscheckout, etc • For vssget, I advise using failonerror=“false”, writablefiles=“skip”, filetimestamp=“updated” • Vsslabel is similar to tagging in SVN
Bonus: propertyfile for versioning • propertyfile task writes/updates a properties file • You can perform increments on properties • You then read those properties using the property task with the file attribute • Perfect for versioning
Demo testVersion • Eclipse • Command line • See version number increase • Note we didn’t manually create the file • Add constructs like “rc” notations