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