Index: tasks/war.rake
===================================================================
--- tasks/war.rake	(revision 458)
+++ tasks/war.rake	(working copy)
@@ -10,6 +10,11 @@
 require 'create_war'
 require 'run'
 
+# load configuration
+WAR_CONFIGURATION = War::Configuration.new
+WAR_RUNNER = War::Runner.new(WAR_CONFIGURATION)
+WAR_CREATOR = War::Creator.new(WAR_CONFIGURATION)
+
 # aliases for the tasks
 task 'create_war' => ['war:standalone:create']
 task 'create_war:standalone' => ['war:standalone:create']
@@ -19,37 +24,43 @@
 task 'war:shared' => ['war:shared:create']
 task 'tmp:war:clean' => ['tmp:war:clear']
 
+unless Rake::Task['war:init']
+  task 'war:init' do
+    # hook task for more advanced inititalization of the war configuration
+  end
+end
+
 # create a standalone package
 desc 'Create a self-contained Java war'
-task 'war:standalone:create' do
-  creator = War::Creator.new
-  creator.standalone = true
-  creator.create_war_file
+task 'war:standalone:create' => 'war:init' do
+  WAR_CREATOR.standalone = true
+  WAR_CREATOR.create_war_file
 end
 
 # assemble the files for a standalone package
-task 'war:standalone:assemble' do
-  creator = War::Creator.new
-  creator.standalone = true
-  creator.assemble
+task 'war:standalone:assemble' => 'war:init' do
+  WAR_CREATOR.standalone = true
+  WAR_CREATOR.assemble
 end
 
 # create a shared package
 desc 'Create a war for use on a Java server where JRuby is available'
-task 'war:shared:create' do
-  creator = War::Creator.new
-  creator.standalone = false
-  creator.create_war_file
+task 'war:shared:create' => 'war:init' do
+  WAR_CREATOR.standalone = false
+  WAR_CREATOR.create_war_file
 end
 
 # clean up
 desc "Clears all files used in the creation of a war"
-task 'tmp:war:clear' do
-  War::Creator.new.clean_war
+task 'tmp:war:clear' => 'war:init' do
+  WAR_CREATOR.clean_war
 end
 
 # run the war file with jetty
 desc "Run the webapp in Jetty"
-task 'war:standalone:run' => ['war:standalone:assemble'] do
-  War::Runner.new.run_standalone
-end
\ No newline at end of file
+task 'war:standalone:run' => ['war:standalone:assemble', 'war:standalone:run_no_assemble']
+
+desc "Run the webapp in Jetty without assembling (faster)"
+task 'war:standalone:run_no_assemble' => 'war:init' do
+  WAR_RUNNER.run_standalone
+end
Index: lib/war_config.rb
===================================================================
--- lib/war_config.rb	(revision 458)
+++ lib/war_config.rb	(working copy)
@@ -141,7 +141,6 @@
       user_config = File.join(@rails_basedir, 'config', 'war.rb')
       if File.exists?(user_config)
         begin
-          puts "Reading user configuration"
           @config_db = War::Configuration::DSL.evaluate(user_config, self).result
         rescue => e
           puts e.backtrace.join("\n")
@@ -175,6 +174,10 @@
       @gem_libraries[name] = match_version
     end
 
+    def remove_gem(name)
+      @gem_libraries.delete(name)
+    end
+
     def local_locations(artifact, version, type='jar')
       paths = []
       if local_java_lib
Index: lib/run.rb
===================================================================
--- lib/run.rb	(revision 458)
+++ lib/run.rb	(working copy)
@@ -12,8 +12,9 @@
     attr_accessor :classpath
     attr_accessor :java_opts
     
-    def initialize
-      @config = Configuration.new
+    def initialize(config = Configuration.new)
+      @config = config
+      @java_opts = ''
       @jetty_main = 'org.mortbay.start.Main'
       @jetty_port = 8080
       @jetty_tmp = File.join('tmp', 'jetty')
@@ -31,7 +32,10 @@
       classpath_string = classpath.join(config.os_path_separator)
       java_opts = self.java_opts
       java_opts << ' -Xmx128m' unless java_opts =~ /-Xmx/
-      system("java #{java_opts} -cp \"#{classpath_string}\" #{jetty_main} #{jetty_config}")
+      java_opts << " -Djetty.port=#{@jetty_port}" unless java_opts =~ /jetty.port/
+      cmd = "java #{java_opts} -cp \"#{classpath_string}\" #{jetty_main} #{jetty_config}"
+      puts cmd
+      system(cmd)
     end
     
     def java_opts
Index: lib/create_war.rb
===================================================================
--- lib/create_war.rb	(revision 458)
+++ lib/create_war.rb	(working copy)
@@ -15,8 +15,8 @@
 
     attr_accessor :config
 
-    def initialize
-      @config = Configuration.new
+    def initialize(config = Configuration.new)
+      @config = config
       @java_lib_packer = JavaLibPacker.new(@config)
       @ruby_lib_packer = RubyLibPacker.new(@config)
       @webapp_packer = WebappPacker.new(@config)
