buildr 1.3.5-x86-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +998 -0
- data/LICENSE +176 -0
- data/NOTICE +26 -0
- data/README.rdoc +134 -0
- data/Rakefile +45 -0
- data/_buildr +29 -0
- data/_jbuildr +29 -0
- data/addon/buildr/antlr.rb +65 -0
- data/addon/buildr/cobertura.rb +22 -0
- data/addon/buildr/drb.rb +281 -0
- data/addon/buildr/emma.rb +22 -0
- data/addon/buildr/hibernate.rb +142 -0
- data/addon/buildr/javacc.rb +85 -0
- data/addon/buildr/jdepend.rb +60 -0
- data/addon/buildr/jetty.rb +248 -0
- data/addon/buildr/jibx.rb +86 -0
- data/addon/buildr/nailgun.rb +221 -0
- data/addon/buildr/openjpa.rb +90 -0
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.java +41 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.java +144 -0
- data/addon/buildr/xmlbeans.rb +93 -0
- data/bin/buildr +19 -0
- data/buildr.buildfile +58 -0
- data/buildr.gemspec +65 -0
- data/doc/_config.yml +1 -0
- data/doc/_layouts/default.html +88 -0
- data/doc/_layouts/preface.html +22 -0
- data/doc/artifacts.textile +211 -0
- data/doc/building.textile +244 -0
- data/doc/contributing.textile +252 -0
- data/doc/css/default.css +236 -0
- data/doc/css/print.css +101 -0
- data/doc/css/syntax.css +23 -0
- data/doc/download.textile +79 -0
- data/doc/extending.textile +186 -0
- data/doc/images/1442160941-frontcover.jpg +0 -0
- data/doc/images/asf-logo.gif +0 -0
- data/doc/images/asf-logo.png +0 -0
- data/doc/images/buildr-hires.png +0 -0
- data/doc/images/buildr.png +0 -0
- data/doc/images/favicon.png +0 -0
- data/doc/images/growl-icon.tiff +0 -0
- data/doc/images/note.png +0 -0
- data/doc/images/project-structure.png +0 -0
- data/doc/images/tip.png +0 -0
- data/doc/images/zbuildr.png +0 -0
- data/doc/images/zbuildr.tif +0 -0
- data/doc/index.textile +69 -0
- data/doc/installing.textile +266 -0
- data/doc/languages.textile +459 -0
- data/doc/mailing_lists.textile +25 -0
- data/doc/more_stuff.textile +457 -0
- data/doc/packaging.textile +430 -0
- data/doc/preface.textile +54 -0
- data/doc/projects.textile +271 -0
- data/doc/quick_start.textile +210 -0
- data/doc/scripts/buildr-git.rb +512 -0
- data/doc/scripts/gitflow.rb +296 -0
- data/doc/scripts/install-jruby.sh +44 -0
- data/doc/scripts/install-linux.sh +72 -0
- data/doc/scripts/install-osx.sh +52 -0
- data/doc/settings_profiles.textile +280 -0
- data/doc/testing.textile +222 -0
- data/etc/KEYS +151 -0
- data/lib/buildr.rb +36 -0
- data/lib/buildr/core.rb +35 -0
- data/lib/buildr/core/application.rb +656 -0
- data/lib/buildr/core/build.rb +452 -0
- data/lib/buildr/core/checks.rb +254 -0
- data/lib/buildr/core/common.rb +150 -0
- data/lib/buildr/core/compile.rb +608 -0
- data/lib/buildr/core/environment.rb +129 -0
- data/lib/buildr/core/filter.rb +362 -0
- data/lib/buildr/core/generate.rb +195 -0
- data/lib/buildr/core/help.rb +119 -0
- data/lib/buildr/core/osx.rb +46 -0
- data/lib/buildr/core/progressbar.rb +156 -0
- data/lib/buildr/core/project.rb +866 -0
- data/lib/buildr/core/shell.rb +198 -0
- data/lib/buildr/core/test.rb +723 -0
- data/lib/buildr/core/transports.rb +559 -0
- data/lib/buildr/core/util.rb +449 -0
- data/lib/buildr/groovy.rb +19 -0
- data/lib/buildr/groovy/bdd.rb +106 -0
- data/lib/buildr/groovy/compiler.rb +138 -0
- data/lib/buildr/groovy/shell.rb +48 -0
- data/lib/buildr/ide.rb +19 -0
- data/lib/buildr/ide/eclipse.rb +334 -0
- data/lib/buildr/ide/eclipse/java.rb +53 -0
- data/lib/buildr/ide/eclipse/plugin.rb +68 -0
- data/lib/buildr/ide/eclipse/scala.rb +66 -0
- data/lib/buildr/ide/idea.ipr.template +300 -0
- data/lib/buildr/ide/idea.rb +190 -0
- data/lib/buildr/ide/idea7x.ipr.template +290 -0
- data/lib/buildr/ide/idea7x.rb +212 -0
- data/lib/buildr/java.rb +23 -0
- data/lib/buildr/java/ant.rb +94 -0
- data/lib/buildr/java/bdd.rb +459 -0
- data/lib/buildr/java/cobertura.rb +274 -0
- data/lib/buildr/java/commands.rb +213 -0
- data/lib/buildr/java/compiler.rb +349 -0
- data/lib/buildr/java/deprecated.rb +141 -0
- data/lib/buildr/java/emma.rb +244 -0
- data/lib/buildr/java/jruby.rb +117 -0
- data/lib/buildr/java/jtestr_runner.rb.erb +116 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +137 -0
- data/lib/buildr/java/packaging.rb +716 -0
- data/lib/buildr/java/pom.rb +174 -0
- data/lib/buildr/java/rjb.rb +155 -0
- data/lib/buildr/java/test_result.rb +353 -0
- data/lib/buildr/java/tests.rb +333 -0
- data/lib/buildr/java/version_requirement.rb +172 -0
- data/lib/buildr/packaging.rb +24 -0
- data/lib/buildr/packaging/archive.rb +488 -0
- data/lib/buildr/packaging/artifact.rb +749 -0
- data/lib/buildr/packaging/artifact_namespace.rb +972 -0
- data/lib/buildr/packaging/artifact_search.rb +140 -0
- data/lib/buildr/packaging/gems.rb +102 -0
- data/lib/buildr/packaging/package.rb +238 -0
- data/lib/buildr/packaging/tar.rb +186 -0
- data/lib/buildr/packaging/version_requirement.rb +172 -0
- data/lib/buildr/packaging/zip.rb +73 -0
- data/lib/buildr/packaging/ziptask.rb +316 -0
- data/lib/buildr/resources/buildr.icns +0 -0
- data/lib/buildr/scala.rb +25 -0
- data/lib/buildr/scala/bdd.rb +109 -0
- data/lib/buildr/scala/compiler.rb +195 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +35 -0
- data/lib/buildr/scala/shell.rb +55 -0
- data/lib/buildr/scala/tests.rb +157 -0
- data/lib/buildr/shell.rb +180 -0
- data/rakelib/checks.rake +57 -0
- data/rakelib/doc.rake +92 -0
- data/rakelib/jekylltask.rb +120 -0
- data/rakelib/package.rake +73 -0
- data/rakelib/release.rake +149 -0
- data/rakelib/rspec.rake +73 -0
- data/rakelib/setup.rake +54 -0
- data/rakelib/stage.rake +213 -0
- data/rakelib/stage.rake~ +213 -0
- data/spec/addon/drb_spec.rb +328 -0
- data/spec/core/application_spec.rb +502 -0
- data/spec/core/build_spec.rb +677 -0
- data/spec/core/checks_spec.rb +519 -0
- data/spec/core/common_spec.rb +670 -0
- data/spec/core/compile_spec.rb +583 -0
- data/spec/core/extension_spec.rb +93 -0
- data/spec/core/generate_spec.rb +33 -0
- data/spec/core/project_spec.rb +762 -0
- data/spec/core/test_spec.rb +1098 -0
- data/spec/core/transport_spec.rb +537 -0
- data/spec/core/util_spec.rb +67 -0
- data/spec/groovy/bdd_spec.rb +80 -0
- data/spec/groovy/compiler_spec.rb +240 -0
- data/spec/ide/eclipse_spec.rb +501 -0
- data/spec/ide/idea7x_spec.rb +84 -0
- data/spec/java/ant_spec.rb +33 -0
- data/spec/java/bdd_spec.rb +382 -0
- data/spec/java/cobertura_spec.rb +85 -0
- data/spec/java/compiler_spec.rb +446 -0
- data/spec/java/emma_spec.rb +119 -0
- data/spec/java/java_spec.rb +124 -0
- data/spec/java/packaging_spec.rb +1134 -0
- data/spec/java/test_coverage_helper.rb +257 -0
- data/spec/java/tests_spec.rb +493 -0
- data/spec/packaging/archive_spec.rb +527 -0
- data/spec/packaging/artifact_namespace_spec.rb +654 -0
- data/spec/packaging/artifact_spec.rb +795 -0
- data/spec/packaging/packaging_helper.rb +63 -0
- data/spec/packaging/packaging_spec.rb +684 -0
- data/spec/sandbox.rb +142 -0
- data/spec/scala/bdd_spec.rb +119 -0
- data/spec/scala/compiler_spec.rb +284 -0
- data/spec/scala/scala.rb +38 -0
- data/spec/scala/tests_spec.rb +261 -0
- data/spec/spec_helpers.rb +340 -0
- data/spec/version_requirement_spec.rb +129 -0
- metadata +383 -0
@@ -0,0 +1,85 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
|
17
|
+
require 'buildr/java'
|
18
|
+
|
19
|
+
|
20
|
+
module Buildr
|
21
|
+
# Provides JavaCC compile tasks. Require explicitly using <code>require "buildr/javacc"</code>.
|
22
|
+
module JavaCC
|
23
|
+
|
24
|
+
REQUIRES = [ "net.java.dev.javacc:javacc:jar:4.0", "net.java.dev.javacc:javacc:jar:4.0" ]
|
25
|
+
|
26
|
+
Java.classpath << REQUIRES
|
27
|
+
|
28
|
+
class << self
|
29
|
+
|
30
|
+
def javacc(*args)
|
31
|
+
options = Hash === args.last ? args.pop : {}
|
32
|
+
rake_check_options options, :output
|
33
|
+
|
34
|
+
args = args.flatten.map(&:to_s).collect { |f| File.directory?(f) ? FileList[f + "/**/*.jj"] : f }.flatten
|
35
|
+
args.unshift "-OUTPUT_DIRECTORY=#{options[:output]}" if options[:output]
|
36
|
+
Java.load
|
37
|
+
Java.org.javacc.parser.Main.mainProgram(args.to_java(Java.java.lang.String)) == 0 or
|
38
|
+
fail "Failed to run JavaCC, see errors above."
|
39
|
+
end
|
40
|
+
|
41
|
+
def jjtree(*args)
|
42
|
+
options = Hash === args.last ? args.pop : {}
|
43
|
+
rake_check_options options, :output, :build_node_files
|
44
|
+
|
45
|
+
args = args.flatten.map(&:to_s).collect { |f| File.directory?(f) ? FileList[f + "**/*.jjt"] : f }.flatten
|
46
|
+
args.unshift "-OUTPUT_DIRECTORY=#{options[:output]}" if options[:output]
|
47
|
+
args.unshift "-BUILD_NODE_FILES=#{options[:build_node_files] || false}"
|
48
|
+
Java.load
|
49
|
+
Java.org.javacc.jjtree.JJTree.new.main(args.to_java(Java.java.lang.String)) == 0 or
|
50
|
+
fail "Failed to run JJTree, see errors above."
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def javacc(*args)
|
56
|
+
if Hash === args.last
|
57
|
+
options = args.pop
|
58
|
+
in_package = options[:in_package].split(".")
|
59
|
+
else
|
60
|
+
in_package = []
|
61
|
+
end
|
62
|
+
file(path_to(:target, :generated, :javacc)=>args.flatten) do |task|
|
63
|
+
JavaCC.javacc task.prerequisites, :output=>File.join(task.name, in_package)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def jjtree(*args)
|
68
|
+
if Hash === args.last
|
69
|
+
options = args.pop
|
70
|
+
in_package = options[:in_package].split(".")
|
71
|
+
build_node_files = options[:build_node_files]
|
72
|
+
else
|
73
|
+
in_package = []
|
74
|
+
end
|
75
|
+
file(path_to(:target, :generated, :jjtree)=>args.flatten) do |task|
|
76
|
+
JavaCC.jjtree task.prerequisites, :output=>File.join(task.name, in_package), :build_node_files=>build_node_files
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
class Project
|
83
|
+
include JavaCC
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
|
17
|
+
require 'buildr/java'
|
18
|
+
|
19
|
+
|
20
|
+
module Buildr
|
21
|
+
|
22
|
+
# Addes the <code>jdepend:swing</code>, <code>jdepend:text</code> and <code>jdepend:xml</code> tasks.
|
23
|
+
# Require explicitly using <code>require "buildr/jdepend"</code>.
|
24
|
+
module Jdepend
|
25
|
+
|
26
|
+
REQUIRES = ["jdepend:jdepend:jar:2.9.1"]
|
27
|
+
|
28
|
+
class << self
|
29
|
+
|
30
|
+
def requires()
|
31
|
+
@requires ||= Buildr.artifacts(REQUIRES).each(&:invoke).map(&:to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
def paths()
|
35
|
+
Project.projects.map(&:compile).each(&:invoke).map(&:target).
|
36
|
+
map(&:to_s).select { |path| File.exist?(path) }.map { |path| File.expand_path(path) }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
namespace "jdepend" do
|
42
|
+
|
43
|
+
desc "Runs JDepend on all your projects (Swing UI)"
|
44
|
+
task "swing" do
|
45
|
+
Java::Commands.java "jdepend.swingui.JDepend", paths, :classpath=>requires, :name=>"JDepend"
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Runs JDepend on all your projects (Text UI)"
|
49
|
+
task "text" do
|
50
|
+
Java::Commands.java "jdepend.textui.JDepend", paths, :classpath=>requires, :name=>"JDepend"
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "Runs JDepend on all your projects (XML output to jdepend.xml)"
|
54
|
+
task "xml" do
|
55
|
+
Java::Commands.java "jdepend.xmlui.JDepend", "-file", "jdepend.xml", paths, :classpath=>requires, :name=>"JDepend"
|
56
|
+
puts "Created jdepend.xml"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,248 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
|
17
|
+
require 'uri'
|
18
|
+
require 'net/http'
|
19
|
+
require 'buildr/core/project'
|
20
|
+
require 'buildr/java'
|
21
|
+
require 'buildr/packaging'
|
22
|
+
require 'thread'
|
23
|
+
|
24
|
+
|
25
|
+
module Buildr
|
26
|
+
|
27
|
+
# Provides a collection of tasks and methods for using Jetty, specifically as a server
|
28
|
+
# for testing your application.
|
29
|
+
#
|
30
|
+
# Build files should always start Jetty by invoking the #use task, typically as
|
31
|
+
# a prerequisite. This task will start Jetty once during the build, and shut it down
|
32
|
+
# when the build completes.
|
33
|
+
#
|
34
|
+
# If you want to keep Jetty running across builds, and look at error messages, you can
|
35
|
+
# start Jetty in a separate console with:
|
36
|
+
# buildr jetty:start
|
37
|
+
# To stop this instance of Jetty, simply kill the process (Ctrl-C) or run:
|
38
|
+
# buildr jetty:stop
|
39
|
+
#
|
40
|
+
# If you start Jetty separately from the build, the #use task will connect to that
|
41
|
+
# existing server. Since you are using Jetty across several builds, you will want to
|
42
|
+
# cleanup any mess created by each build. You can use the #setup and #teardown tasks,
|
43
|
+
# which are called when Jetty is first used in the build, and when the build ends.
|
44
|
+
class Jetty
|
45
|
+
|
46
|
+
# Which version of Jetty we're using by default (change with options.jetty.version).
|
47
|
+
VERSION = "6.1.3"
|
48
|
+
SLF4J_VERSION = "1.4.3"
|
49
|
+
|
50
|
+
# Libraries used by Jetty.
|
51
|
+
REQUIRES = [ "org.mortbay.jetty:jetty:jar:#{VERSION}", "org.mortbay.jetty:jetty-util:jar:#{VERSION}",
|
52
|
+
"org.mortbay.jetty:servlet-api-2.5:jar:#{VERSION}", "org.slf4j:slf4j-api:jar:#{SLF4J_VERSION}",
|
53
|
+
"org.slf4j:slf4j-simple:jar:#{SLF4J_VERSION}", "org.slf4j:jcl104-over-slf4j:jar:#{SLF4J_VERSION}" ]
|
54
|
+
|
55
|
+
Java.classpath << REQUIRES
|
56
|
+
Java.classpath << File.dirname(__FILE__)
|
57
|
+
|
58
|
+
# Default URL for Jetty (change with options.jetty.url).
|
59
|
+
URL = "http://localhost:8080"
|
60
|
+
|
61
|
+
class << self
|
62
|
+
|
63
|
+
# :call-seq:
|
64
|
+
# instance() => Jetty
|
65
|
+
#
|
66
|
+
# Returns an instance of Jetty.
|
67
|
+
def instance()
|
68
|
+
@instance ||= Jetty.new("jetty", URL)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def initialize(name, url) #:nodoc:
|
74
|
+
@url = url
|
75
|
+
namespace name do
|
76
|
+
@setup = task("setup")
|
77
|
+
@teardown = task("teardown")
|
78
|
+
@use = task("use") { fire }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# The URL for the Jetty server. Leave as is if you want to use the default server
|
83
|
+
# (http://localhost:8080).
|
84
|
+
attr_accessor :url
|
85
|
+
|
86
|
+
# :call-seq:
|
87
|
+
# start(pipe?)
|
88
|
+
#
|
89
|
+
# Starts Jetty. This method does not return, it keeps the thread running until
|
90
|
+
# Jetty is stopped. If you want to run Jetty parallel with other tasks in the build,
|
91
|
+
# invoke the #use task instead.
|
92
|
+
def start(sync = nil)
|
93
|
+
begin
|
94
|
+
puts "classpath #{Java.classpath.inspect}"
|
95
|
+
port = URI.parse(url).port
|
96
|
+
puts "Starting Jetty at http://localhost:#{port}" if verbose
|
97
|
+
Java.load
|
98
|
+
jetty = Java.org.apache.buildr.JettyWrapper.new(port)
|
99
|
+
sync << "Started" if sync
|
100
|
+
sleep # Forever
|
101
|
+
rescue Interrupt # Stopped from console
|
102
|
+
rescue Exception=>error
|
103
|
+
puts "#{error.class}: #{error.message}"
|
104
|
+
end
|
105
|
+
exit! # No at_exit
|
106
|
+
end
|
107
|
+
|
108
|
+
# :call-seq:
|
109
|
+
# stop()
|
110
|
+
#
|
111
|
+
# Stops Jetty. Stops a server running in a separate process.
|
112
|
+
def stop()
|
113
|
+
uri = URI.parse(url)
|
114
|
+
begin
|
115
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
116
|
+
http.request_post "/buildr/stop", ""
|
117
|
+
end
|
118
|
+
rescue Errno::ECONNREFUSED
|
119
|
+
# Expected if Jetty server not running.
|
120
|
+
rescue EOFError
|
121
|
+
# We get EOFError because Jetty is brutally killed.
|
122
|
+
end
|
123
|
+
puts "Jetty server stopped"
|
124
|
+
end
|
125
|
+
|
126
|
+
# :call-seq:
|
127
|
+
# running?() => boolean
|
128
|
+
#
|
129
|
+
# Returns true if it finds a running Jetty server that supports the Buildr
|
130
|
+
# requests for deploying, stopping, etc.
|
131
|
+
def running?()
|
132
|
+
uri = URI.parse(url)
|
133
|
+
begin
|
134
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
135
|
+
response = http.request_get("/buildr/")
|
136
|
+
response.is_a?(Net::HTTPSuccess) && response.body =~ /Alive/
|
137
|
+
end
|
138
|
+
rescue Errno::ECONNREFUSED, Errno::EBADF
|
139
|
+
false
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
# :call-seq:
|
144
|
+
# deploy(url, webapp) => path
|
145
|
+
#
|
146
|
+
# Deploy a WAR in the specified URL.
|
147
|
+
def deploy(url, webapp)
|
148
|
+
use.invoke
|
149
|
+
uri = URI.parse(url)
|
150
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
151
|
+
response = http.request_post("/buildr/deploy", "webapp=#{webapp}&path=#{uri.path}")
|
152
|
+
if Net::HTTPOK === response && response.body =~ /Deployed/
|
153
|
+
path = response.body.split[1]
|
154
|
+
puts "Deployed #{webapp}, context path #{uri.path}" if Rake.application.options.trace
|
155
|
+
path
|
156
|
+
else
|
157
|
+
fail "Deployment failed: #{response}"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
# :call-seq:
|
163
|
+
# undeploy(url) => boolean
|
164
|
+
#
|
165
|
+
# Undeploys a WAR from the specified URL.
|
166
|
+
def undeploy(url)
|
167
|
+
use.invoke
|
168
|
+
uri = URI.parse(url)
|
169
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
170
|
+
response = http.request_post("/buildr/undeploy", "path=#{uri.path}")
|
171
|
+
if Net::HTTPOK === response && response.body =~ /Undeployed/
|
172
|
+
true
|
173
|
+
else
|
174
|
+
fail "Deployment failed: #{response}"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
# :call-seq:
|
180
|
+
# setup(*prereqs) => task
|
181
|
+
# setup(*prereqs) { |task| .. } => task
|
182
|
+
#
|
183
|
+
# This task executes when Jetty is first used in the build. You can use it to
|
184
|
+
# deploy artifacts into Jetty.
|
185
|
+
def setup(*prereqs, &block)
|
186
|
+
@setup.enhance prereqs, &block
|
187
|
+
end
|
188
|
+
|
189
|
+
# :call-seq:
|
190
|
+
# teardown(*prereqs) => task
|
191
|
+
# teardown(*prereqs) { |task| .. } => task
|
192
|
+
#
|
193
|
+
# This task executes when the build is done. You can use it to undeploy artifacts
|
194
|
+
# previously deployed into Jetty.
|
195
|
+
def teardown(*prereqs, &block)
|
196
|
+
@teardown.enhance prereqs, &block
|
197
|
+
end
|
198
|
+
|
199
|
+
# :call-seq:
|
200
|
+
# use(*prereqs) => task
|
201
|
+
# use(*prereqs) { |task| .. } => task
|
202
|
+
#
|
203
|
+
# If you intend to use Jetty, invoke this task. It will start a new instance of
|
204
|
+
# Jetty and close it when the build is done. However, if you already have a server
|
205
|
+
# running in the background (e.g. jetty:start), it will use that server and will
|
206
|
+
# not close it down.
|
207
|
+
def use(*prereqs, &block)
|
208
|
+
@use.enhance prereqs, &block
|
209
|
+
end
|
210
|
+
|
211
|
+
protected
|
212
|
+
|
213
|
+
# If you want to start Jetty inside the build, call this method instead of #start.
|
214
|
+
# It will spawn a separate process that will run Jetty, and will stop Jetty when
|
215
|
+
# the build ends. However, if you already started Jetty from the console (with
|
216
|
+
# take jetty:start), it will use the existing instance without shutting it down.
|
217
|
+
def fire()
|
218
|
+
unless running?
|
219
|
+
sync = Queue.new
|
220
|
+
Thread.new { start sync }
|
221
|
+
# Wait for Jetty to fire up before doing anything else.
|
222
|
+
sync.pop == "Started" or fail "Jetty not started"
|
223
|
+
puts "Jetty started" if verbose
|
224
|
+
at_exit { stop }
|
225
|
+
end
|
226
|
+
@setup.invoke
|
227
|
+
at_exit { @teardown.invoke }
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
namespace "jetty" do
|
233
|
+
desc "Start an instance of Jetty running in the background"
|
234
|
+
task("start") { Jetty.instance.start }
|
235
|
+
desc "Stop an instance of Jetty running in the background"
|
236
|
+
task("stop") { Jetty.instance.stop }
|
237
|
+
end
|
238
|
+
|
239
|
+
# :call-seq:
|
240
|
+
# jetty() => Jetty
|
241
|
+
#
|
242
|
+
# Returns a Jetty object. You can use this to discover the Jetty#use task,
|
243
|
+
# configure the Jetty#setup and Jetty#teardown tasks, deploy and undeploy to Jetty.
|
244
|
+
def jetty()
|
245
|
+
@jetty ||= Jetty.instance
|
246
|
+
end
|
247
|
+
|
248
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
|
17
|
+
require 'java/java'
|
18
|
+
|
19
|
+
|
20
|
+
module Buildr
|
21
|
+
|
22
|
+
# Provides JiBX bytecode enhancement. Require explicitly using <code>require 'buildr/jibx'</code>.
|
23
|
+
module JiBX
|
24
|
+
|
25
|
+
JIBX_VERSION = '1.1.5'
|
26
|
+
BCEL_VERSION = '5.2'
|
27
|
+
STAX_VERSION = '1.0-2'
|
28
|
+
XPP3_VERSION = '1.1.4c'
|
29
|
+
|
30
|
+
REQUIRES = [ "org.jibx:jibx-bind:jar:#{JIBX_VERSION}",
|
31
|
+
"org.jibx:jibx-run:jar:#{JIBX_VERSION}",
|
32
|
+
"org.apache.bcel:bcel:jar:#{BCEL_VERSION}",
|
33
|
+
"javax.xml.stream:stax-api:jar:#{STAX_VERSION}",
|
34
|
+
"xpp3:xpp3:jar:#{XPP3_VERSION}" ]
|
35
|
+
|
36
|
+
Java.classpath << REQUIRES
|
37
|
+
|
38
|
+
class << self
|
39
|
+
|
40
|
+
def bind(options)
|
41
|
+
rake_check_options options, :classpath, :output, :binding, :target, :verbose, :load
|
42
|
+
artifacts = Buildr.artifacts(options[:classpath]).each { |a| a.invoke }.map(&:to_s) + [options[:output].to_s]
|
43
|
+
binding = file(options[:binding]).tap { |task| task.invoke }.to_s
|
44
|
+
|
45
|
+
Buildr.ant 'jibx' do |ant|
|
46
|
+
ant.taskdef :name=>'bind', :classname=>'org.jibx.binding.ant.CompileTask',
|
47
|
+
:classpath => requires.join(File::PATH_SEPARATOR)
|
48
|
+
ant.bind :verbose => options[:verbose].to_s, :load => options[:load].to_s, :binding=>options[:binding].to_s do
|
49
|
+
ant.classpath :path => artifacts.join(File::PATH_SEPARATOR)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def requires()
|
57
|
+
@requires ||= Buildr.artifacts(REQUIRES).each { |artifact| artifact.invoke }.map(&:to_s)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
def jibx_bind(options = nil)
|
63
|
+
|
64
|
+
# FIXME - add support for :bindingfileset and :classpathset
|
65
|
+
# Note: either :binding or :bindingfileset should be set, and either
|
66
|
+
# :classpath or :classpathset should be set, and options passed to
|
67
|
+
# ant.bind should be adjusted accordingly. At present, only :binding
|
68
|
+
# and :classpath are supported (which should be fine for most!)
|
69
|
+
jibx_options = { :output => compile.target,
|
70
|
+
:classpath => compile.classpath,
|
71
|
+
:binding => path_to(:source, :main, :resources, 'META-INF/binding.xml'),
|
72
|
+
:target => compile.target,
|
73
|
+
:load => false,
|
74
|
+
:verbose => false
|
75
|
+
}
|
76
|
+
|
77
|
+
JiBX.bind jibx_options.merge(options || {})
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
class Project
|
83
|
+
include JiBX
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|