lib/buildr4osgi/osgi/project_extension.rb in buildr4osgi-0.9.3 vs lib/buildr4osgi/osgi/project_extension.rb in buildr4osgi-0.9.4
- old
+ new
@@ -116,10 +116,27 @@
end
}
end
end
end
+
+ class InstallBundlesTask < Rake::Task #:nodoc:
+ attr_accessor :project
+ def initialize(*args) #:nodoc:
+ super
+ enhance do |task|
+ puts "Deploy directory: #{OSGi.registry.release_to}/plugins"
+ mkpath "#{OSGi.registry.release_to}/plugins"
+ project.projects.each do |subp|
+ subp.packages.select {|package| package.is_a?(::OSGi::BundlePackaging)}.each do |package|
+ puts "Deploying #{subp.artifact(package)} to #{OSGi.registry.release_to}"
+ cp(subp.artifact(package).to_s, "#{OSGi.registry.release_to}/plugins")
+ end
+ end
+ end
+ end
+ end
class InstallTask < Rake::Task #:nodoc:
include BundleCollector
attr_accessor :project, :local
@@ -166,10 +183,11 @@
end
if local
artifact = Buildr::artifact(bundle.to_s)
installed = Buildr.repositories.locate(artifact)
+ rm_r installed
mkpath File.dirname(installed)
Buildr::artifact(bundle.to_s).from(bundle.file).install
info "Installed #{installed}"
else
Buildr::artifact(bundle.to_s).from(bundle.file).upload
@@ -195,10 +213,12 @@
Project.local_task('osgi:install:dependencies') { |name| "Install dependencies for #{name}" }
desc 'Installs OSGi dependencies in the Maven local repository'
Project.local_task('osgi:upload:dependencies') { |name| "Upload dependencies for #{name}" }
desc 'Cleans the dependencies.yml file'
Project.local_task('osgi:clean:dependencies') {|name| "Clean dependencies for #{name}"}
+ desc 'Installs the bundle projects into an OSGi repository'
+ Project.local_task('osgi:install:bundles') {|name| "Install bundles for #{name}"}
end
before_define do |project|
dependencies = DependenciesTask.define_task('osgi:resolve:dependencies')
dependencies.project = project
@@ -209,13 +229,15 @@
upload.project = project
clean = Rake::Task.define_task('osgi:clean:dependencies').enhance do
Buildr::write File.join(project.base_dir, "dependencies.yml"),
- project.projects.inject({}) {|hash, p| hash.merge({p.name => []})}.merge({project.name => []}).to_yaml
+ project.projects.inject({}) {|hash, p| hash.merge({p.name => {}})}.merge({project.name => {}}).to_yaml
end
- install.project = project
+
+ install_bundles = InstallBundlesTask.define_task('osgi:install:bundles')
+ install_bundles.project = project
end
#
#
# Reads the dependencies from dependencies.yml
@@ -237,14 +259,12 @@
# Returns the EE defined in the manifest if present.
def execution_environments()
# Code copied straight from Bundle.fromProject
packaging = project.packages.select {|package| package.is_a?(BundlePackaging)}
raise "More than one bundle packaging is defined over the project #{project.id}, see BOSGI-16." if packaging.size > 1
- return nil if packaging.empty?
- m = ::Buildr::Packaging::Java::Manifest.new(File.exists?("META-INF/MANIFEST.MF") ? File.read("META-INF/MANIFEST.MF") : nil)
- m.main.merge!(manifest)
- m.main.merge!(packaging.first.manifest)
+ m = ::Buildr::Packaging::Java::Manifest.new(File.exists?(project.path_to("META-INF/MANIFEST.MF")) ? File.read(project.path_to("META-INF/MANIFEST.MF")) : nil)
+ m.main.merge!(packaging.first.manifest) unless packaging.empty?
(Manifest.read(m.to_s).first["Bundle-RequiredExecutionEnvironment"] || {}).keys.compact.flatten.collect {|ee| OSGi.options.available_ee[ee]}
end
end
@@ -252,6 +272,6 @@
module Buildr #:nodoc:
class Project #:nodoc:
include OSGi::ProjectExtension
end
-end
\ No newline at end of file
+end