Return-Path: X-Original-To: apmail-buildr-commits-archive@www.apache.org Delivered-To: apmail-buildr-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F36CF100A2 for ; Sun, 6 Oct 2013 07:18:15 +0000 (UTC) Received: (qmail 28995 invoked by uid 500); 6 Oct 2013 07:18:14 -0000 Delivered-To: apmail-buildr-commits-archive@buildr.apache.org Received: (qmail 28969 invoked by uid 500); 6 Oct 2013 07:18:13 -0000 Mailing-List: contact commits-help@buildr.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@buildr.apache.org Delivered-To: mailing list commits@buildr.apache.org Received: (qmail 28899 invoked by uid 99); 6 Oct 2013 07:18:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Oct 2013 07:18:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Oct 2013 07:17:53 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 1602F238890B; Sun, 6 Oct 2013 07:17:30 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1529576 [1/18] - in /buildr/site: ./ rdoc/ rdoc/Benchmark/ rdoc/Buildr/ rdoc/Buildr/ArchiveTask/ rdoc/Buildr/ArtifactNamespace/ rdoc/Buildr/Assets/ rdoc/Buildr/Checks/ rdoc/Buildr/Cobertura/ rdoc/Buildr/Cobertura/CoberturaExtension/ rdoc/B... Date: Sun, 06 Oct 2013 07:17:12 -0000 To: commits@buildr.apache.org From: donaldp@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131006071730.1602F238890B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: donaldp Date: Sun Oct 6 07:17:05 2013 New Revision: 1529576 URL: http://svn.apache.org/r1529576 Log: Publish latest site Added: buildr/site/rdoc/Buildr/Assets/ buildr/site/rdoc/Buildr/Assets.html buildr/site/rdoc/Buildr/Assets/AssetsTask.html buildr/site/rdoc/Buildr/Assets/ProjectExtension.html buildr/site/rdoc/Rake/FileList.html Modified: buildr/site/CHANGELOG buildr/site/artifacts.html buildr/site/building.html buildr/site/buildr.pdf buildr/site/contributing.html buildr/site/download.html buildr/site/extending.html buildr/site/index.html buildr/site/installing.html buildr/site/languages.html buildr/site/more_stuff.html buildr/site/packaging.html buildr/site/projects.html buildr/site/quick_start.html buildr/site/rdoc/Abbrev.html buildr/site/rdoc/Addrinfo.html buildr/site/rdoc/Array.html buildr/site/rdoc/Base64.html buildr/site/rdoc/BasicSocket.html buildr/site/rdoc/Benchmark.html buildr/site/rdoc/Benchmark/Tms.html buildr/site/rdoc/Bignum.html buildr/site/rdoc/Buildr.html buildr/site/rdoc/Buildr/ActsAsArtifact.html buildr/site/rdoc/Buildr/Ant.html buildr/site/rdoc/Buildr/Apt.html buildr/site/rdoc/Buildr/ArchiveTask.html buildr/site/rdoc/Buildr/ArchiveTask/Merge.html buildr/site/rdoc/Buildr/Artifact.html buildr/site/rdoc/Buildr/ArtifactNamespace.html buildr/site/rdoc/Buildr/ArtifactNamespace/ArtifactRequirement.html buildr/site/rdoc/Buildr/ArtifactSearch.html buildr/site/rdoc/Buildr/Build.html buildr/site/rdoc/Buildr/CC.html buildr/site/rdoc/Buildr/CCTask.html buildr/site/rdoc/Buildr/Checks.html buildr/site/rdoc/Buildr/Checks/Expectation.html buildr/site/rdoc/Buildr/Cobertura.html buildr/site/rdoc/Buildr/Cobertura/CoberturaCheck.html buildr/site/rdoc/Buildr/Cobertura/CoberturaExtension.html buildr/site/rdoc/Buildr/Cobertura/CoberturaExtension/File.html buildr/site/rdoc/Buildr/Cobertura/File.html buildr/site/rdoc/Buildr/Compile.html buildr/site/rdoc/Buildr/CompileTask.html buildr/site/rdoc/Buildr/Compiler.html buildr/site/rdoc/Buildr/Compiler/Ecj.html buildr/site/rdoc/Buildr/Compiler/ExternalJavac.html buildr/site/rdoc/Buildr/Compiler/Javac.html buildr/site/rdoc/Buildr/ConcatTask.html buildr/site/rdoc/Buildr/Doc.html buildr/site/rdoc/Buildr/Doc/Base.html buildr/site/rdoc/Buildr/Doc/DocTask.html buildr/site/rdoc/Buildr/Doc/Groovydoc.html buildr/site/rdoc/Buildr/Doc/Javadoc.html buildr/site/rdoc/Buildr/Doc/JavadocDefaults.html buildr/site/rdoc/Buildr/Doc/Scaladoc.html buildr/site/rdoc/Buildr/Doc/ScaladocDefaults.html buildr/site/rdoc/Buildr/Doc/VScaladoc.html buildr/site/rdoc/Buildr/Eclipse.html buildr/site/rdoc/Buildr/Eclipse/Builder.html buildr/site/rdoc/Buildr/Eclipse/Eclipse.html buildr/site/rdoc/Buildr/Eclipse/Java.html buildr/site/rdoc/Buildr/Eclipse/Options.html buildr/site/rdoc/Buildr/Eclipse/Plugin.html buildr/site/rdoc/Buildr/Eclipse/Scala.html buildr/site/rdoc/Buildr/Emma.html buildr/site/rdoc/Buildr/Extension.html buildr/site/rdoc/Buildr/Extension/ClassMethods.html buildr/site/rdoc/Buildr/Filter.html buildr/site/rdoc/Buildr/Filter/Mapper.html buildr/site/rdoc/Buildr/GitRelease.html buildr/site/rdoc/Buildr/Groovy.html buildr/site/rdoc/Buildr/Groovy/EasyB.html buildr/site/rdoc/Buildr/Groovy/GroovySH.html buildr/site/rdoc/Buildr/Groovy/Groovyc.html buildr/site/rdoc/Buildr/HgRelease.html buildr/site/rdoc/Buildr/IntegrationTestsTask.html buildr/site/rdoc/Buildr/IntellijIdea.html buildr/site/rdoc/Buildr/IntellijIdea/IdeaFile.html buildr/site/rdoc/Buildr/IntellijIdea/IdeaModule.html buildr/site/rdoc/Buildr/IntellijIdea/IdeaProject.html buildr/site/rdoc/Buildr/IntellijIdea/ProjectExtension.html buildr/site/rdoc/Buildr/JBehave.html buildr/site/rdoc/Buildr/JMock.html buildr/site/rdoc/Buildr/JRebel.html buildr/site/rdoc/Buildr/JUnit.html buildr/site/rdoc/Buildr/JUnit/Report.html buildr/site/rdoc/Buildr/Layout.html buildr/site/rdoc/Buildr/Layout/Default.html buildr/site/rdoc/Buildr/MultiTest.html buildr/site/rdoc/Buildr/OptionalArtifact.html buildr/site/rdoc/Buildr/Options.html buildr/site/rdoc/Buildr/Options/Proxies.html buildr/site/rdoc/Buildr/POM.html buildr/site/rdoc/Buildr/Package.html buildr/site/rdoc/Buildr/PackageAsTestJar.html buildr/site/rdoc/Buildr/PackageGemTask.html buildr/site/rdoc/Buildr/Packaging.html buildr/site/rdoc/Buildr/Packaging/Java.html buildr/site/rdoc/Buildr/Packaging/Java/AarTask.html buildr/site/rdoc/Buildr/Packaging/Java/EarTask.html buildr/site/rdoc/Buildr/Packaging/Java/JarTask.html buildr/site/rdoc/Buildr/Packaging/Java/Manifest.html buildr/site/rdoc/Buildr/Packaging/Java/WarTask.html buildr/site/rdoc/Buildr/Packaging/Scala.html buildr/site/rdoc/Buildr/ProcessStatus.html buildr/site/rdoc/Buildr/Project.html buildr/site/rdoc/Buildr/RSpec.html buildr/site/rdoc/Buildr/Repositories.html buildr/site/rdoc/Buildr/ResourcesTask.html buildr/site/rdoc/Buildr/Run.html buildr/site/rdoc/Buildr/Run/Base.html buildr/site/rdoc/Buildr/Run/JavaRunner.html buildr/site/rdoc/Buildr/Run/RunTask.html buildr/site/rdoc/Buildr/Scala.html buildr/site/rdoc/Buildr/Scala/Check.html buildr/site/rdoc/Buildr/Scala/Mockito.html buildr/site/rdoc/Buildr/Scala/ProjectExtension.html buildr/site/rdoc/Buildr/Scala/ScalaShell.html buildr/site/rdoc/Buildr/Scala/ScalaTest.html buildr/site/rdoc/Buildr/Scala/Scalac.html buildr/site/rdoc/Buildr/Scala/ScalacOptions.html buildr/site/rdoc/Buildr/Scala/Specs.html buildr/site/rdoc/Buildr/Scala/Specs2.html buildr/site/rdoc/Buildr/Settings.html buildr/site/rdoc/Buildr/Shell.html buildr/site/rdoc/Buildr/Shell/Base.html buildr/site/rdoc/Buildr/Shell/BeanShell.html buildr/site/rdoc/Buildr/Shell/Clojure.html buildr/site/rdoc/Buildr/Shell/JIRB.html buildr/site/rdoc/Buildr/Shell/ShellTask.html buildr/site/rdoc/Buildr/SvnRelease.html buildr/site/rdoc/Buildr/TarTask.html buildr/site/rdoc/Buildr/Test.html buildr/site/rdoc/Buildr/Test/SkipIfNoTest.html buildr/site/rdoc/Buildr/TestFramework.html buildr/site/rdoc/Buildr/TestFramework/Base.html buildr/site/rdoc/Buildr/TestFramework/JRubyBased.html buildr/site/rdoc/Buildr/TestFramework/JRubyBased/ClassMethods.html buildr/site/rdoc/Buildr/TestFramework/Java.html buildr/site/rdoc/Buildr/TestFramework/TestResult.html buildr/site/rdoc/Buildr/TestFramework/TestResult/Error.html buildr/site/rdoc/Buildr/TestFramework/TestResult/YamlFormatter.html buildr/site/rdoc/Buildr/TestNG.html buildr/site/rdoc/Buildr/TestTask.html buildr/site/rdoc/Buildr/Unzip.html buildr/site/rdoc/Buildr/Util.html buildr/site/rdoc/Buildr/VersionRequirement.html buildr/site/rdoc/Buildr/ZipTask.html buildr/site/rdoc/CGI.html buildr/site/rdoc/CHANGELOG.html buildr/site/rdoc/CMath.html buildr/site/rdoc/CSV.html buildr/site/rdoc/CSV/MalformedCSVError.html buildr/site/rdoc/CSV/Row.html buildr/site/rdoc/CSV/Table.html buildr/site/rdoc/ConditionVariable.html buildr/site/rdoc/DEBUGGER__.html buildr/site/rdoc/DEBUGGER__/Context.html buildr/site/rdoc/DEBUGGER__/RubyVM.html buildr/site/rdoc/DEBUGGER__/Thread.html buildr/site/rdoc/DL.html buildr/site/rdoc/Date.html buildr/site/rdoc/Delegator.html buildr/site/rdoc/Digest.html buildr/site/rdoc/Digest/Class.html buildr/site/rdoc/Digest/Instance.html buildr/site/rdoc/Dir.html buildr/site/rdoc/E2MM.html buildr/site/rdoc/ENV.html buildr/site/rdoc/ERB.html buildr/site/rdoc/ERB/DefMethod.html buildr/site/rdoc/ERB/Util.html buildr/site/rdoc/Enumerable.html buildr/site/rdoc/Exception2MessageMapper.html buildr/site/rdoc/Fiddle.html buildr/site/rdoc/File.html buildr/site/rdoc/File/Stat.html buildr/site/rdoc/FileUtils.html buildr/site/rdoc/FileUtils/DryRun.html buildr/site/rdoc/FileUtils/FFI.html buildr/site/rdoc/FileUtils/FFI/Platform.html buildr/site/rdoc/FileUtils/LowMethods.html buildr/site/rdoc/FileUtils/NoWrite.html buildr/site/rdoc/FileUtils/StreamUtils_.html buildr/site/rdoc/FileUtils/Verbose.html buildr/site/rdoc/Find.html buildr/site/rdoc/Fixnum.html buildr/site/rdoc/Float.html buildr/site/rdoc/Forwardable.html buildr/site/rdoc/GServer.html buildr/site/rdoc/Gem.html buildr/site/rdoc/Gem/LoadError.html buildr/site/rdoc/Gem/Version.html buildr/site/rdoc/GetoptLong.html buildr/site/rdoc/GetoptLong/AmbiguousOption.html buildr/site/rdoc/GetoptLong/Error.html buildr/site/rdoc/GetoptLong/InvalidOption.html buildr/site/rdoc/GetoptLong/MissingArgument.html buildr/site/rdoc/GetoptLong/NeedlessArgument.html buildr/site/rdoc/Hash.html buildr/site/rdoc/INTERP.html buildr/site/rdoc/IO.html buildr/site/rdoc/IPAddr.html buildr/site/rdoc/IPSocket.html buildr/site/rdoc/IRB.html buildr/site/rdoc/IRB/Abort.html buildr/site/rdoc/IRB/Irb.html buildr/site/rdoc/Integer.html buildr/site/rdoc/JSON.html buildr/site/rdoc/Java.html buildr/site/rdoc/Java/Commands.html buildr/site/rdoc/Java/JavaWrapper.html buildr/site/rdoc/Java/Options.html buildr/site/rdoc/Kconv.html buildr/site/rdoc/Kernel.html buildr/site/rdoc/LICENSE.html buildr/site/rdoc/Logger.html buildr/site/rdoc/Logger/Application.html buildr/site/rdoc/Logger/Formatter.html buildr/site/rdoc/Logger/LogDevice.html buildr/site/rdoc/Logger/LogDevice/LogDeviceMutex.html buildr/site/rdoc/Logger/Severity.html buildr/site/rdoc/Logging.html buildr/site/rdoc/MatchData.html buildr/site/rdoc/Math.html buildr/site/rdoc/Matrix.html buildr/site/rdoc/Module.html buildr/site/rdoc/Monitor.html buildr/site/rdoc/MonitorMixin.html buildr/site/rdoc/MonitorMixin/ConditionVariable.html buildr/site/rdoc/MonitorMixin/ConditionVariable/Timeout.html buildr/site/rdoc/MultiTkIp.html buildr/site/rdoc/MultiTkIp/Command_Queue.html buildr/site/rdoc/MultiTkIp/ThreadGroup.html buildr/site/rdoc/MultiTkIp_OK.html buildr/site/rdoc/MultiTkIp_PseudoToplevel_Evaluable.html buildr/site/rdoc/Mutex_m.html buildr/site/rdoc/NOTICE.html buildr/site/rdoc/Numeric.html buildr/site/rdoc/Object.html buildr/site/rdoc/Observable.html buildr/site/rdoc/Open3.html buildr/site/rdoc/OpenObject.html buildr/site/rdoc/OpenStruct.html buildr/site/rdoc/OpenURI.html buildr/site/rdoc/OpenURI/HTTPError.html buildr/site/rdoc/OpenURI/HTTPRedirect.html buildr/site/rdoc/OpenURI/Meta.html buildr/site/rdoc/OpenURI/OpenRead.html buildr/site/rdoc/OptionParser.html buildr/site/rdoc/OptionParser/Acceptables.html buildr/site/rdoc/OptionParser/AmbiguousArgument.html buildr/site/rdoc/OptionParser/AmbiguousOption.html buildr/site/rdoc/OptionParser/Arguable.html buildr/site/rdoc/OptionParser/CompletingHash.html buildr/site/rdoc/OptionParser/Completion.html buildr/site/rdoc/OptionParser/InvalidArgument.html buildr/site/rdoc/OptionParser/InvalidOption.html buildr/site/rdoc/OptionParser/List.html buildr/site/rdoc/OptionParser/MissingArgument.html buildr/site/rdoc/OptionParser/NeedlessArgument.html buildr/site/rdoc/OptionParser/OptionMap.html buildr/site/rdoc/OptionParser/ParseError.html buildr/site/rdoc/OptionParser/Regexp.html buildr/site/rdoc/OptionParser/Switch.html buildr/site/rdoc/OptionParser/Switch/NoArgument.html buildr/site/rdoc/OptionParser/Switch/OptionalArgument.html buildr/site/rdoc/OptionParser/Switch/PlacedArgument.html buildr/site/rdoc/OptionParser/Switch/RequiredArgument.html buildr/site/rdoc/PP.html buildr/site/rdoc/PP/ObjectMixin.html buildr/site/rdoc/PP/PPMethods.html buildr/site/rdoc/PP/SingleLine.html buildr/site/rdoc/PStore.html buildr/site/rdoc/PStore/Error.html buildr/site/rdoc/Pathname.html buildr/site/rdoc/PrettyPrint.html buildr/site/rdoc/PrettyPrint/Breakable.html buildr/site/rdoc/PrettyPrint/Group.html buildr/site/rdoc/PrettyPrint/GroupQueue.html buildr/site/rdoc/PrettyPrint/SingleLine.html buildr/site/rdoc/PrettyPrint/Text.html buildr/site/rdoc/Prime.html buildr/site/rdoc/Prime/EratosthenesGenerator.html buildr/site/rdoc/Prime/EratosthenesSieve.html buildr/site/rdoc/Prime/Generator23.html buildr/site/rdoc/Prime/OldCompatibility.html buildr/site/rdoc/Prime/PseudoPrimeGenerator.html buildr/site/rdoc/Prime/TrialDivision.html buildr/site/rdoc/Prime/TrialDivisionGenerator.html buildr/site/rdoc/Profiler__.html buildr/site/rdoc/ProgressBar.html buildr/site/rdoc/Psych.html buildr/site/rdoc/Psych/BadAlias.html buildr/site/rdoc/Psych/Exception.html buildr/site/rdoc/Queue.html buildr/site/rdoc/RDoc.html buildr/site/rdoc/RDoc/Error.html buildr/site/rdoc/README_rdoc.html buildr/site/rdoc/RSS.html buildr/site/rdoc/Rake.html buildr/site/rdoc/Rake/FileTask.html buildr/site/rdoc/Range.html buildr/site/rdoc/Rational.html buildr/site/rdoc/RbConfig.html buildr/site/rdoc/RemoteTkIp.html buildr/site/rdoc/Resolv.html buildr/site/rdoc/Resolv/DNS.html buildr/site/rdoc/Resolv/DNS/Config.html buildr/site/rdoc/Resolv/DNS/Config/NXDomain.html buildr/site/rdoc/Resolv/DNS/Config/OtherResolvError.html buildr/site/rdoc/Resolv/DNS/DecodeError.html buildr/site/rdoc/Resolv/DNS/EncodeError.html buildr/site/rdoc/Resolv/DNS/Name.html buildr/site/rdoc/Resolv/DNS/Query.html buildr/site/rdoc/Resolv/DNS/Requester.html buildr/site/rdoc/Resolv/DNS/Requester/RequestError.html buildr/site/rdoc/Resolv/DNS/Resource.html buildr/site/rdoc/Resolv/DNS/Resource/ANY.html buildr/site/rdoc/Resolv/DNS/Resource/CNAME.html buildr/site/rdoc/Resolv/DNS/Resource/DomainName.html buildr/site/rdoc/Resolv/DNS/Resource/Generic.html buildr/site/rdoc/Resolv/DNS/Resource/HINFO.html buildr/site/rdoc/Resolv/DNS/Resource/IN.html buildr/site/rdoc/Resolv/DNS/Resource/IN/A.html buildr/site/rdoc/Resolv/DNS/Resource/IN/AAAA.html buildr/site/rdoc/Resolv/DNS/Resource/IN/SRV.html buildr/site/rdoc/Resolv/DNS/Resource/IN/WKS.html buildr/site/rdoc/Resolv/DNS/Resource/MINFO.html buildr/site/rdoc/Resolv/DNS/Resource/MX.html buildr/site/rdoc/Resolv/DNS/Resource/NS.html buildr/site/rdoc/Resolv/DNS/Resource/PTR.html buildr/site/rdoc/Resolv/DNS/Resource/SOA.html buildr/site/rdoc/Resolv/DNS/Resource/TXT.html buildr/site/rdoc/Resolv/Hosts.html buildr/site/rdoc/Resolv/IPv4.html buildr/site/rdoc/Resolv/IPv6.html buildr/site/rdoc/Resolv/ResolvError.html buildr/site/rdoc/Resolv/ResolvTimeout.html buildr/site/rdoc/RubyVM.html buildr/site/rdoc/SOCKSSocket.html buildr/site/rdoc/STRING_OR_FAILED_FORMAT.html buildr/site/rdoc/Scanf.html buildr/site/rdoc/Scanf/FormatSpecifier.html buildr/site/rdoc/Scanf/FormatString.html buildr/site/rdoc/SecureRandom.html buildr/site/rdoc/Set.html buildr/site/rdoc/Shell.html buildr/site/rdoc/Shellwords.html buildr/site/rdoc/SimpleDelegator.html buildr/site/rdoc/SingleForwardable.html buildr/site/rdoc/Singleton.html buildr/site/rdoc/SizedQueue.html buildr/site/rdoc/Socket.html buildr/site/rdoc/Socket/UDPSource.html buildr/site/rdoc/SortedSet.html buildr/site/rdoc/String.html buildr/site/rdoc/Struct.html buildr/site/rdoc/Syck.html buildr/site/rdoc/Sync.html buildr/site/rdoc/Sync_m.html buildr/site/rdoc/Sync_m/Err.html buildr/site/rdoc/Sync_m/Err/LockModeFailer.html buildr/site/rdoc/Sync_m/Err/UnknownLocker.html buildr/site/rdoc/Synchronizer.html buildr/site/rdoc/Synchronizer_m.html buildr/site/rdoc/TCPSocket.html buildr/site/rdoc/TSort.html buildr/site/rdoc/TSort/Cyclic.html buildr/site/rdoc/TclTkIp.html buildr/site/rdoc/TclTkLib.html buildr/site/rdoc/TclTkLib/RELEASE_TYPE.html buildr/site/rdoc/Tempfile.html buildr/site/rdoc/Tempfile/Remover.html buildr/site/rdoc/ThWait.html buildr/site/rdoc/ThreadError.html buildr/site/rdoc/ThreadsWait.html buildr/site/rdoc/Time.html buildr/site/rdoc/Timeout.html buildr/site/rdoc/Timeout/Error.html buildr/site/rdoc/Timeout/TimeoutError.html buildr/site/rdoc/TkComm.html buildr/site/rdoc/TkCore.html buildr/site/rdoc/TkCore/Tk_OBJECT_TABLE.html buildr/site/rdoc/Tracer.html buildr/site/rdoc/UDPSocket.html buildr/site/rdoc/URI.html buildr/site/rdoc/URI/FILE.html buildr/site/rdoc/URI/FTP.html buildr/site/rdoc/URI/Generic.html buildr/site/rdoc/URI/HTTP.html buildr/site/rdoc/URI/NotFoundError.html buildr/site/rdoc/Vector.html buildr/site/rdoc/Vector/ZeroVectorError.html buildr/site/rdoc/WEBrick.html buildr/site/rdoc/WeakRef.html buildr/site/rdoc/WeakRef/RefError.html buildr/site/rdoc/YAML.html buildr/site/rdoc/Zip.html buildr/site/rdoc/Zip/ZipEntry.html buildr/site/rdoc/Zip/ZipEntrySet.html buildr/site/rdoc/created.rid buildr/site/rdoc/index.html buildr/site/rdoc/js/search_index.js buildr/site/rdoc/table_of_contents.html buildr/site/releasing.html buildr/site/settings_profiles.html buildr/site/testing.html Modified: buildr/site/CHANGELOG URL: http://svn.apache.org/viewvc/buildr/site/CHANGELOG?rev=1529576&r1=1529575&r2=1529576&view=diff ============================================================================== --- buildr/site/CHANGELOG (original) +++ buildr/site/CHANGELOG Sun Oct 6 07:17:05 2013 @@ -1,4 +1,64 @@ -1.4.13 (Pending) +1.4.13 (2013-10-02) +* Fixed: BUILDR-439 - Fix java command under windows when supplied + with extremely long classpath. Submitted By Tammo van Lessen. +* Fixed: BUILDR-394 - Fix release task with standalone distribution. + Submitted By Tammo van Lessen. +* Added: BUILDR-678 - Improve support for gpg signing artifacts + using a single method. +* Fixed: BUILDR-677 - GPG addon hangs when .asc files are still in + target. Submitted By Tammo van Lessen. +* Added: Initial support for data source creation in Intellij IDEA + project files. +* Fixed: BUILDR-676 - Rework Java::Command:java so that it does not + reject the :dir option. Reported by John Roth. +* Added: Auto-detect jpa provider in Intellij IDEA facet generation if + persistence.xml file is present and provider not specified. +* Added: Auto-detect jruby version in Intellij IDEA facet generation if + .ruby-version file is present. +* Added: Improve support for auto-detection of ejb and web descriptors + within Intellij IDEA project generation. +* Change: Default to setting the "User-Agent" header to "Buildr-VERSION" + when accessing http resources. Maven Central rejects requests + without a User-Agent string. +* Change: Change default scope of dependencies to 'compile'. Submitted + by Ingo Schmidt. +* Change: BUILDR-675 - Set Cache-Control to 'no-cache' when downloading + artifacts. Submitted by Félix Enrique Llorente Pastora. +* Added: Initial support for simple integration of an asset pipeline. + See "Compiling Assets" section in the manual. +* Fixed: BUILDR-673 - Fix the option handling of the MultiTest test + framework to behave as documented. Only the framework specific + options are passed to the test. Submitted by John Roth. +* Added: BUILDR-672 - Persist the properties field in the checkstyle + addon so that they can be modified by the user. Submitted + by Wim C. +* Fixed: Make the package_as_* methods public so that the methods are + detected in Ruby >= 2.0.0 via the respond_to? method. +* Change: Updated dependency versions; + - rspec-expectations (2.14.3) + - rspec-mocks (2.14.3) + - rspec-core (2.14.5) + - rspec (2.14.1) + - minitar (0.5.4) + - ci_reporter (1.8.4) + - xml-simple (1.1.2) + - rjb (1.4.8) + - diff-lcs (1.2.4) + - builder (3.2.2) + - net-ssh (2.7.0) + - net-sftp (2.1.2) + - hoe (3.7.1) + - json_pure (1.8.0) + - highline (1.6.19) +* Fixed: BUILDR-668 - Specify File::FNM_EXTGLOB for include globs + where needed in Ruby >= 2.0.0. Reported by Yavor Nikolov. +* Fixed: Ensure generation of buildfiles from eclipse projects will + finds .project files in Ruby >= 2.0.0. +* Fixed: Patch Rake::FileList in Ruby >= 2.0.0 to match dot files if + a .* pattern is supplied as in earlier versions of ruby. +* Fixed: Make Archive-related operations (e.g. zip.merge) deterministic using + OrderedHash. +* Change: Update to TestNG 6.8.5. 1.4.12 (2013-05-04) * Added: BUILDR-648 Add new package(:test_jar) packaging type. Modified: buildr/site/artifacts.html URL: http://svn.apache.org/viewvc/buildr/site/artifacts.html?rev=1529576&r1=1529575&r2=1529576&view=diff ============================================================================== --- buildr/site/artifacts.html (original) +++ buildr/site/artifacts.html Sun Oct 6 07:17:05 2013 @@ -86,39 +86,29 @@

We’ll get into all of that in a second, but first, let’s introduce the artifact specification. It’s a simple string that takes one of two forms:

group:id:type:version
 group:id:type:classifier:version
-
-
-

For example, 'org.apache.axis2:axis2:jar:1.2' refers to an artifact with group identifier org.apache.axis2, artifact identifier axis2, a JAR file with version 1.2. Classifiers are typically used to distinguish between similar file types, for example, a source distribution and a binary distribution that otherwise have the same identifier and are both ZIP files.

+

For example, 'org.apache.axis2:axis2:jar:1.2' refers to an artifact with group identifier org.apache.axis2, artifact identifier axis2, a JAR file with version 1.2. Classifiers are typically used to distinguish between similar file types, for example, a source distribution and a binary distribution that otherwise have the same identifier and are both ZIP files.

Specifying Artifacts

If your Buildfile spells out 'org.apache.axis2:axis2:jar:1.2' more than once, you’re doing something wrong. Repeating the same string over and over will make your code harder to maintain. You’ll know that when you upgrade to a new version in one place, forget to do it in another, and end up with a mismatch.

You can use Ruby’s syntax to do simple string substitution, for example:

AXIS_VERSION = '1.2'
 
 compile.with "org.apache.axis2:axis2:jar:#{AXIS_VERSION}"
-
-
-

Better yet, you can define all your artifacts at the top of the Buildfile and use constants to reference them in your project definition. For example:

+

Better yet, you can define all your artifacts at the top of the Buildfile and use constants to reference them in your project definition. For example:

AXIS2 = 'org.apache.axis2:axis2:jar:1.2'
 
 compile.with AXIS2
-
-
-

Note that we’re not using a separate constant for the version number. In our experience, it’s unnecessary. The version number intentionally appears at the end of the string, where it stands out easily.

+

Note that we’re not using a separate constant for the version number. In our experience, it’s unnecessary. The version number intentionally appears at the end of the string, where it stands out easily.

If you have a set of artifacts that belong to the same group and version, and that’s quite common, you can use the group shortcut:

AXIOM  = group('axiom-api', 'axiom-impl', 'axiom-dom',
   :under=>'org.apache.ws.commons.axiom', :version=>'1.2.4')
-
-
-

Buildr projects also define a group attribute which can lead to some confusion. If you want to define an artifact group within a project definition, you should use the explicit qualifier Buildr::group.

+

Buildr projects also define a group attribute which can lead to some confusion. If you want to define an artifact group within a project definition, you should use the explicit qualifier Buildr::group.

If you have several artifacts you always use together, consider placing them in an array. Methods that accept lists of artifacts also accept arrays. For example:

OPENJPA = ['org.apache.openjpa:openjpa:jar:1.2.1',
   'net.sourceforge.serp:serp:jar:1.12.0']
 AXIS_OF_WS = [AXIS2, AXIOM]
 
 compile.with OPENJPA, AXIS_OF_WS
-
-
-

Another way to group related artifacts together and access them individually is using the struct shortcut. For example:

+

Another way to group related artifacts together and access them individually is using the struct shortcut. For example:

JAVAX = struct(
   :activation  =>'javax.activation:activation:jar:1.1',
   :persistence =>'javax.persistence:persistence-api:jar:1.0',
@@ -126,60 +116,40 @@ group:id:type:classifier:version
 )
 
 compile.with JAVAX.persistence, OPENJPA
-
-
-

In our experience, using constants in this manner makes your Buildfile much easier to write and maintain.

+

In our experience, using constants in this manner makes your Buildfile much easier to write and maintain.

And, of course, you can always place your artifact specifications in a separate file and require it into your Buildfile. For example, if you’re working on several different projects that all share the same artifacts:

require '../shared/artifacts'
-
-
-

When you use require, Ruby always looks for a filename with the .rb extension, so in this case it expects to find artifacts.rb in the shared directory.

+

When you use require, Ruby always looks for a filename with the .rb extension, so in this case it expects to find artifacts.rb in the shared directory.

One last thing. You can also treat artifact specifications as hashes. For example:

AXIS = { :group=>'org.apache.axis2', :id=>'axis2', :version=>'1.2' }
 compile.with AXIS
 puts compile.dependencies.first.to_hash
 => { :group=>'org.apache.axis2', :id=>'axis2',
      :version=>'1.2', :type=>:jar }
-
-
-

Specifying Repositories

+

Specifying Repositories

Buildr can download artifacts for you, but only if you tell it where to find them. You need to specify at least one remote repository, from which to download these artifacts.

When you call repositories.remote, you get an array of URLs for the various remote repositories. Initially, it’s an empty array, to which you can add new repositories. For example:

repositories.remote << 'http://www.ibiblio.org/maven2/'
-
-
-

If your repository requires HTTP authentication, you can write,

+

If your repository requires HTTP authentication, you can write,

repositories.remote << URI.parse("http://user:password@repository.example.com")
-
-
-

If you need to use a proxy server to access remote repositories, you can set the environment variable HTTP_PROXY to the proxy server URL (use HTTPS_PROXY for proxying HTTPS connections). You can also work without a proxy for certain hosts by specifying the NO_PROXY environment variable. For example:

+

If you need to use a proxy server to access remote repositories, you can set the environment variable HTTP_PROXY to the proxy server URL (use HTTPS_PROXY for proxying HTTPS connections). You can also work without a proxy for certain hosts by specifying the NO_PROXY environment variable. For example:

$ export HTTP_PROXY = 'http://myproxy:8080'
 $ export NO_PROXY = '*.mycompany.com,localhost,special:800'
-
-
-

Alternatively you can use the Buildr options proxy.http and proxy.exclude:

+

Alternatively you can use the Buildr options proxy.http and proxy.exclude:

options.proxy.http = 'http://myproxy:8080'
 options.proxy.exclude << '*.mycompany.com'
 options.proxy.exclude << 'localhost'
-
-
-

All the artifacts download into the local repository. Since all your projects share the same local repository, you only need to download each artifact once. Buildr was designed to be used alongside Maven 2.0, for example, when migrating projects from Maven 2.0 over to Buildr. By default it will share the same local repository, expecting the repository to be the .m2/repository directory inside your home directory.

+

All the artifacts download into the local repository. Since all your projects share the same local repository, you only need to download each artifact once. Buildr was designed to be used alongside Maven 2.0, for example, when migrating projects from Maven 2.0 over to Buildr. By default it will share the same local repository, expecting the repository to be the .m2/repository directory inside your home directory.

You can choose to relocate the local repository by giving it a different path, for example:

repositories.local = '/usr/local/maven/repository'
-
-
-

That’s one change you don’t want to commit into the Buildfile, so the best place to do it is in the buildr.rb file in the .buildr directory under your home directory.

+

That’s one change you don’t want to commit into the Buildfile, so the best place to do it is in the buildr.rb file in the .buildr directory under your home directory.

Buildr downloads artifacts when it needs to use them, for example, to compile a project. You don’t need to download artifacts directly. Except when you do, for example, if you want to download all the latest artifacts and then go off-line. It’s as simple as:

$ buildr artifacts
-
-
-

Downloading Artifacts

+

Downloading Artifacts

Within your buildfile you can download artifacts directly by invoking them, for example:

artifact('org.apache.openjpa:openjpa:jar:1.2.1').invoke
 artifacts(OPENJPA).each(&:invoke)
-
-
-

When you let Buildr download artifacts for you, or by invoking the artifact task yourself, it scans through the remote repositories assuming each repository follows the Maven 2 structure. Starting from the root repository URL, it will look for each artifact using the path group/id/version/id-version.type (or …/id-version-classifier.type). The group identifier becomes a path by turning periods (.) into slashes (/). So to find org.apache.axis2:axis2:jar:1.2, we’re going to look for org/apache/axis2/axis2/1.2/axis2-1.2.jar.

+

When you let Buildr download artifacts for you, or by invoking the artifact task yourself, it scans through the remote repositories assuming each repository follows the Maven 2 structure. Starting from the root repository URL, it will look for each artifact using the path group/id/version/id-version.type (or …/id-version-classifier.type). The group identifier becomes a path by turning periods (.) into slashes (/). So to find org.apache.axis2:axis2:jar:1.2, we’re going to look for org/apache/axis2/axis2/1.2/axis2-1.2.jar.

You’ll find a lot of open source Java libraries in public repositories that support this structure (for example, the Ibiblio Maven repository). And, of course, every remote repository you setup for your projects.

But there are exceptions to the rule. Say we want to download the Dojo widget library and use it in our project. It’s available from the Dojo Web site, but that site doesn’t follow the Maven repository conventions, so our feeble attempt to use existing remote repositories will fail.

We can still treat Dojo as an artifact, by telling Buildr where to download it from:

@@ -187,9 +157,7 @@ group:id:type:classifier:version url = "http://download.dojotoolkit.org/release-#{DOJO}/dojo-#{DOJO}-widget.zip" download(artifact("dojo:dojo:zip:widget:#{DOJO}")=>url) - - -

Explaining how it works is tricky, skip if you don’t care for the details. On the other hand, it will give you a better understanding of Buildr/Rake, so if not now, come back and read it later.

+

Explaining how it works is tricky, skip if you don’t care for the details. On the other hand, it will give you a better understanding of Buildr/Rake, so if not now, come back and read it later.

We use the artifact method to create an Artifact task that references the Dojo widget in our local repository. The Artifact task is a file task with some additional behavior added by Buildr. When you call compile.with, that’s exactly what it does internally, turning each of your artifact specifications into an Artifact task.

But the Artifact task doesn’t know how to download the Dojo widget, only how to handle conventional repositories. So we’re going to create a download task as well. We use the download method to create a file task that downloads the file from a remote URL. (Of course, it will only download the file if it doesn’t already exist.)

But which task gets used when? We could have defined these tasks separately and used some glue code to make one use the other. Instead, we call download with the results of artifact. Essentially, we’re telling download to use the same file path as artifact. So now we have two file tasks that point to the very same file. We wired them together.

@@ -202,21 +170,15 @@ group:id:type:classifier:version

So let’s start by creating a task that downloads the ZIP, and another one to extract it and create the JAR file:

app_zip = download('target/app.zip'=>url)
 bean_jar = file('target/app/bean.jar'=>unzip('target/app'=>app_zip))
-
-
-

When you call artifact, it returns an Artifact task that points to the artifact file in the local repository, downloading the file if it doesn’t already exist. You can override this behavior by enhancing the task and creating the file yourself (you may also want to create a POM file). Or much simpler, call the from method on the artifact and tell it where to find the source file.

+

When you call artifact, it returns an Artifact task that points to the artifact file in the local repository, downloading the file if it doesn’t already exist. You can override this behavior by enhancing the task and creating the file yourself (you may also want to create a POM file). Or much simpler, call the from method on the artifact and tell it where to find the source file.

So the next step is to specify the artifact and tell it to use the extracted JAR file:

bean = artifact('example.com:beans:jar:1.0').from(bean_jar)
-
-
-

The artifact still points to the local repository, but when we invoke the task it copies the source file over to the local repository, instead of attempting a download.

+

The artifact still points to the local repository, but when we invoke the task it copies the source file over to the local repository, instead of attempting a download.

Use the install method if you want the artifact and its POM installed in the local repository when you run the install task. Likewise, use the upload method if you want the artifact uploaded to the release server when you run the upload task. You do not need to do this on artifacts downloaded from a remote server, or created with the package method, the later are automatically added to the list of installed/uploaded artifacts.

Our example ends by including the artifact in the install and upload tasks:

install bean
 upload bean
-
-
-

Calling the install (and likewise upload) method on an artifact run buildr install. If you need to download and install an artifact, invoke the task directly with install(<artifact>).invoke.

+

Calling the install (and likewise upload) method on an artifact run buildr install. If you need to download and install an artifact, invoke the task directly with install(<artifact>).invoke.

We’ll talk more about installing and uploading in the next chapter, but right now we’re going to package some artifacts.

Modified: buildr/site/building.html URL: http://svn.apache.org/viewvc/buildr/site/building.html?rev=1529576&r1=1529575&r2=1529576&view=diff ============================================================================== --- buildr/site/building.html (original) +++ buildr/site/building.html Sun Oct 6 07:17:05 2013 @@ -96,45 +96,31 @@

For now let’s just show a simple example:

compile.with 'org.apache.axis2:axis2:jar:1.2',
   'org.apache.derby:derby:jar:10.1.2.1', projects('teh-api', 'teh-impl')
-
-
-

Passing arrays to compile.with is just a convenient for handling multiple dependencies, we’ll show more examples of that when we talk about Artifacts.

+

Passing arrays to compile.with is just a convenient for handling multiple dependencies, we’ll show more examples of that when we talk about Artifacts.

Likewise, the compile task has an array of file tasks that point at the source directories you want to compile from. You can access that array by calling compile.sources. You can use compile.from to add new source directories by passing a file name or a file task.

For example, let’s run the APT tool on our annotated source code before compiling it:

compile.from apt
-
-
-

When you call apt on a project, it returns a file task that points to the target/generated/apt directory. This file task executes by running APT, using the same list of source directories, dependencies and compiler options. It then generates new source files in the target directory. Calling compile.from with that file task includes those additional source files in the list of compiled sources.

+

When you call apt on a project, it returns a file task that points to the target/generated/apt directory. This file task executes by running APT, using the same list of source directories, dependencies and compiler options. It then generates new source files in the target directory. Calling compile.from with that file task includes those additional source files in the list of compiled sources.

Here’s another example:

jjtree = jjtree(_('src/main/jjtree'), :in_package=>'com.acme')
 compile.from javacc(jjtree, :in_package=>'com.acme'), jjtree
-
-
-

This time, the variable jjtree is a file task that reads a JJTree source file from the src/main/jjtree directory, and generates additional source files in the target/generated/jjtree directory. The second line creates another file task that takes those source files, runs JavaCC on them, and generates yet more source files in target/generated/javacc. Finally, we include both sets of source files in addition to those already in src/main/java, and compile the lot.

+

This time, the variable jjtree is a file task that reads a JJTree source file from the src/main/jjtree directory, and generates additional source files in the target/generated/jjtree directory. The second line creates another file task that takes those source files, runs JavaCC on them, and generates yet more source files in target/generated/javacc. Finally, we include both sets of source files in addition to those already in src/main/java, and compile the lot.

The interesting thing about these two examples is how you’re wiring file tasks together to create more complicated tasks, piping the output of one task into the inputs of another. Wiring tasks this way is the most common way to handle complex builds, and uses Rake’s dependency mechanism to only run tasks when it detects a change to one of the source files.

You can also control the target directory. Use compile.target to get the target directory file task. If you need to change the target directory, call the compile.into method with the new path.

We use method pairs to give you finer control over the compiler, but also a way to easily configure it. Methods like dependencies and sources give you a live array you can manipulate, or iterate over. On the other hand, methods like with and from accept a wider set of arguments and clean them up for you. They also all return the same task you’re calling, so you can chain methods together.

For example:

compile.from('srcs').with('org.apache.axis2:axis2:jar:1.2').
   into('classes').using(:target=>'1.4')
-
-
-

Buildr uses the method pair and method chaining idiom in many places to make your life easier without sacrificing flexibility.

+

Buildr uses the method pair and method chaining idiom in many places to make your life easier without sacrificing flexibility.

Occasionally, you’ll need to post-process the generated bytecode. Since you only want to do that after compiling, and let the compiler decide when to do that – only when changes require re-compiling – you’ll want to extend the compile task. You can do that by calling compile with a block.

For example, to run the OpenJPA bytecode enhancer after compiling the source files:

compile { open_jpa_enhance }
-
-
-

You can change various compile options by calling, you guessed, compile.options. For example, to set the compiler to VM compatibility with Java 1.5 and turn on all Lint messages:

+

You can change various compile options by calling, you guessed, compile.options. For example, to set the compiler to VM compatibility with Java 1.5 and turn on all Lint messages:

compile.options.target = '1.5'
 compile.options.lint = 'all'
-
-
-

Or, if you want to chain methods together:

+

Or, if you want to chain methods together:

compile.using :target=>'1.5', :lint=>'all'
-
-
-

Sub-projects inherit compile options from their parent project, so you only need to change these settings once in the top project. You can do so, even if the top project itself doesn’t compile anything.

+

Sub-projects inherit compile options from their parent project, so you only need to change these settings once in the top project. You can do so, even if the top project itself doesn’t compile anything.

The options available to you depend on which compiler you are using for this particular project, obviously the options are not the same for Java and Flash. Two options are designed to work consistently across compilers.

Buildr turns the warning option on by default, but turns it off when you run buildr --silent. It also sets the debug option on, but turns it off when making a release. You can also control the debug option from the command line, for example:

# When calling buildr
@@ -143,17 +129,13 @@
 # Once until we change the variable
 $ export DEBUG=off
 $ buildr compile
-
-
-

The default source and target directories, compiler settings and other options you can use depend on the specific language. You can find more information in the Languages section.

+

The default source and target directories, compiler settings and other options you can use depend on the specific language. You can find more information in the Languages section.

Resources

The compile task comes bundled with a resources task. It copies files from the src/main/resources directory into target/resources. Best used for copying files that you want to include in the generated code, like configuration files, i18n messages, images, etc.

The resources task uses a filter that can change files as it copies them from source to destination. The most common use is by mapping values using a hash. For example, to substitute “${version}” for the project’s version number and “${copyright}” for “Acme Inc © 2007” :

resources.filter.using 'version'=>version,
   'copyright'=>'Acme Inc (C) 2007'
-
-
-

You can also use profiles to supply a name/value map that all resources task should default to, by adding a filter element to each of the profiles. The following examples shows a profiles.yaml file that applies the same filter in development and test environments:

+

You can also use profiles to supply a name/value map that all resources task should default to, by adding a filter element to each of the profiles. The following examples shows a profiles.yaml file that applies the same filter in development and test environments:

filter: &alpha1
   version: experimental
   copyright: Acme Inc (C) 2007
@@ -162,9 +144,7 @@
   filter: *alpha1
 test:
   filter: *alpha1
-
-
-

You can specify a different format by passing it as the first argument. Supported formats include:

+

You can specify a different format by passing it as the first argument. Supported formats include:

@@ -193,82 +173,58 @@

For example, using the :ruby format instead of the default :maven format:

resources.filter.using :ruby, 'version'=>version,
   'copyright'=>'Acme Inc (C) 2007'
-
-
-

For more complicated mapping you can also pass a method or a proc. The filter will call it once for each file with the file name and content.

+

For more complicated mapping you can also pass a method or a proc. The filter will call it once for each file with the file name and content.

If you need to copy resource files from other directories, add these source directories by calling the from method, for example:

resources.from _('src/etc')
-
-
-

You can select to copy only specific files using common file matching patterns. For example, to include only HTML files:

+

You can select to copy only specific files using common file matching patterns. For example, to include only HTML files:

resources.include '*.html'
-
-
-

To include all files, except for files in the scratch directory:

+

To include all files, except for files in the scratch directory:

resources.exclude 'scratch/*'
-
-
-

The filter always excludes the CVS and .svn directories, and all files ending with .bak or ~, so no need to worry about these.

+

The filter always excludes the CVS and .svn directories, and all files ending with .bak or ~, so no need to worry about these.

A file pattern can match any file name or part of a file name using an asterisk (*). Double asterisk (**) matches directories recursively, for example, 'src/main/java/**/*.java'. You can match any character using a question mark (?), or a set of characters using square brackets ([]), similar to regular expressions, for example, '[Rr]eadme'. You can also match from a set of names using curly braces ({}), for example, '*.{html,css}'.

You can use filters elsewhere. The filter method creates a filter, the into method sets the target directory, and using specifies the mapping. Last, you call run on the filter to activate it.

For example:

filter('src/specs').into('target/specs').
   using('version'=>version, 'created'=>Time.now).run
-
-
-

The resources task is, in fact, just a wrapper around such a filter that automatically adds the src/main/resources directory as one of the source directories.

+

The resources task is, in fact, just a wrapper around such a filter that automatically adds the src/main/resources directory as one of the source directories.

More On Building

The build task runs the compile (and resources) tasks as prerequisites, followed by any actions you add to it, and completes by running the test task. The build task itself is a prerequisite to other tasks, for example, package and upload.

You can extend the build task in two ways. You can add more prerequisites that will execute before the task itself, or you can add actions that will execute as part of the task. Which one you choose is up to you, we’ll show you how they differ in a second. If you call build with a list of tasks, it adds these tasks as prerequisites. Call build with a block, and it adds that block as an action. Again, a common idiom you’ll see elsewhere in Buildr and Rake.

Let’s look at a simple example. Say we want to generate a Derby database from an SQL file and include it in the ZIP package:

db = Derby.create(_('target/derby/db')=>_('src/main/sql/derby.sql'))
 package(:zip).include db
-
-
-

There’s nothing fundamentally wrong with this code, if that’s what you intend to do. But in practice, you don’t always run the package task during development, so you won’t notice if something is wrong with this task when you build. For example, if it fails to generate the SQL file. In addition, the package task runs after build, so you can’t use the database in your test cases.

+

There’s nothing fundamentally wrong with this code, if that’s what you intend to do. But in practice, you don’t always run the package task during development, so you won’t notice if something is wrong with this task when you build. For example, if it fails to generate the SQL file. In addition, the package task runs after build, so you can’t use the database in your test cases.

So let’s refactor it. We’re going to use the variable db to reference the file task that creates the database, and make it a prerequisite of the build task. And use that same variable again to include the database in the ZIP package:

db = Derby.create(_('target/derby/db')=>_('src/main/sql/derby.sql'))
 build db
 package(:zip).include db
-
-
-

Much better. We’re using the same task twice, but since we’re using Rake here, it will only execute once. In fact, it will only execute if we don’t already have a Derby database, or if it detects a change to the SQL file and needs to recreate the database.

+

Much better. We’re using the same task twice, but since we’re using Rake here, it will only execute once. In fact, it will only execute if we don’t already have a Derby database, or if it detects a change to the SQL file and needs to recreate the database.

Derby.create is not part of Buildr, you can get derby.rake here.

Here’s another example. We want to copy some files over as part of the build, and apply a filter to them. This time, we’re going to extend the build task:

build do
   filter('src/specs').into('target/specs').
     using('version'=>version, 'created'=>Time.now).run
 end
-
-
-

The build task is recursive, so running buildr build picks the current project and runs its build task, which in turn runs the build task on each of its sub-projects. One build task to rule them all.

+

The build task is recursive, so running buildr build picks the current project and runs its build task, which in turn runs the build task on each of its sub-projects. One build task to rule them all.

Cleaning

The build task has an evil twin, the clean task. It’s the task you use to remove all the files created during the build, especially when you mess things up and want to start all over.

It basically erases the target directories, the one called target, and if you get creative and change the target directory for tasks like compile, it will also erase those. If you decide to generate files outside the target directory and want to cleanup after yourself, just extend the clean task.

For example:

clean { rm_rf _('staged') }
-
-
-

The rm_rf method deletes the directory and all files in it. It’s named after UNIX’s infamous rm -rf. Use it wisely. This is also a good time to introduce you to FileUtils, a standard Ruby library that contains convenient methods for creating and deleting directories, copying and moving files, even comparing two files. They’re all free of charge when you use Buildr.

+

The rm_rf method deletes the directory and all files in it. It’s named after UNIX’s infamous rm -rf. Use it wisely. This is also a good time to introduce you to FileUtils, a standard Ruby library that contains convenient methods for creating and deleting directories, copying and moving files, even comparing two files. They’re all free of charge when you use Buildr.

Continuous Compilation

And if all that weren’t enough, Buildr also offers a time-saving feature called continuous compilation. This feature, implemented by the cc task, instructs Buildr to loop eternally, polling your project’s source directories for changes. Whenever a change is detected, Buildr immediately triggers the appropriate compilation step and goes right back to polling. This allows you to reap many of the benefits of an incrementally compiling IDE like Eclipse without sacrificing your favorite build tool.

To get started, simply invoke the cc task at the command prompt:

$ buildr cc
-
-
-

This task will immediately invoke the compile and test:compile tasks on your project if necessary. This ensures that your build is completely up to the minute before polling is initiated. After this initial build (if required), Buildr will print a notification indicating which directories are being monitored. By default, these directories will include any source folders (e.g. src/main/java/), any test directories (e.g. src/spec/scala/) as well as any resources (e.g. @src/main/resources/). The Buildr process will remain running during this time, meaning that in order to test this functionality, we will need to open a new shell:

+

This task will immediately invoke the compile and test:compile tasks on your project if necessary. This ensures that your build is completely up to the minute before polling is initiated. After this initial build (if required), Buildr will print a notification indicating which directories are being monitored. By default, these directories will include any source folders (e.g. src/main/java/), any test directories (e.g. src/spec/scala/) as well as any resources (e.g. @src/main/resources/). The Buildr process will remain running during this time, meaning that in order to test this functionality, we will need to open a new shell:

$ touch src/main/java/Test.java
-
-
-

The moment we run this command, Buildr will detect the change and invoke the compile task. It will not invoke the test:compile task, since none of the test files were actually changed. This ensures that potentially time-consuming tasks are avoided if possible. Note that, unlike the build task, the continuous compilation also does not actually run any of your tests. Continuous compilation is designed to be a simple daemon which runs forever, quickly recompiling your project as soon as you save or delete a file. We can terminate the continuous compilation task by pressing Ctrl-C. Left to its own devices, the cc task really will loop forever.

+

The moment we run this command, Buildr will detect the change and invoke the compile task. It will not invoke the test:compile task, since none of the test files were actually changed. This ensures that potentially time-consuming tasks are avoided if possible. Note that, unlike the build task, the continuous compilation also does not actually run any of your tests. Continuous compilation is designed to be a simple daemon which runs forever, quickly recompiling your project as soon as you save or delete a file. We can terminate the continuous compilation task by pressing Ctrl-C. Left to its own devices, the cc task really will loop forever.

There are several advantages to continuous compilation. Number one is convenience. Once you invoke the cc task, you can focus exclusively on the code, editing and saving your files in an unbroken workflow. There is no need to break your concentration to invoke Buildr manually unless you need to run the test suite, deploy the application or anything beyond compilation. The second advantage is speed. By using the continuous compilation process, you avoid repeatedly incurring Buildr’s startup overhead. While this startup time is kept to a minimum, it is still perceptable, particularly when running on JRuby. Since the cc task runs within a Buildr instance which has already been started, there is no need for repeated, inefficient load times. Again, this allows you to focus more completely on what’s really important: the code.

By default, the cc task will poll your sources once every 200 milliseconds. We have found that this frequency strikes a nice balance between CPU load (which is insignificant) and nearly-instant detection. However, you may wish to tune this value based on your own needs. To do so, simply use the cc.frequency property in your project definition:

project 'foo' do
   cc.frequency 1.5      # poll every one-and-a-half seconds
 end
-
-
-

If you find that the 200 ms default imposes too much overhead, try changing cc.frequency to a higher value. On the flip side, if you find that you’re waiting too long for changes to be caught by the poll, tune the frequency lower.

+

If you find that the 200 ms default imposes too much overhead, try changing cc.frequency to a higher value. On the flip side, if you find that you’re waiting too long for changes to be caught by the poll, tune the frequency lower.

Now let’s talk about the artifacts we mentioned before.

Modified: buildr/site/buildr.pdf URL: http://svn.apache.org/viewvc/buildr/site/buildr.pdf?rev=1529576&r1=1529575&r2=1529576&view=diff ============================================================================== Binary files - no diff available.
Format