Author: donaldp
Date: Mon Sep 24 11:59:04 2012
New Revision: 1389317
URL: http://svn.apache.org/viewvc?rev=1389317&view=rev
Log:
Merge the components of the eclipse IDE support into a single file
Removed:
buildr/trunk/lib/buildr/ide/eclipse/
Modified:
buildr/trunk/lib/buildr.rb
buildr/trunk/lib/buildr/ide/eclipse.rb
Modified: buildr/trunk/lib/buildr.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr.rb?rev=1389317&r1=1389316&r2=1389317&view=diff
==============================================================================
--- buildr/trunk/lib/buildr.rb (original)
+++ buildr/trunk/lib/buildr.rb Mon Sep 24 11:59:04 2012
@@ -82,10 +82,6 @@ require 'buildr/java/doc'
require 'buildr/java/deprecated'
require 'buildr/ide/idea'
require 'buildr/ide/eclipse'
-# Order is significant for auto-detection, from most specific to least
-require 'buildr/ide/eclipse/plugin'
-require 'buildr/ide/eclipse/scala'
-require 'buildr/ide/eclipse/java'
# Methods defined in Buildr are both instance methods (e.g. when included in
Project)
# and class methods when invoked like Buildr.artifacts().
Modified: buildr/trunk/lib/buildr/ide/eclipse.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/ide/eclipse.rb?rev=1389317&r1=1389316&r2=1389317&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/ide/eclipse.rb (original)
+++ buildr/trunk/lib/buildr/ide/eclipse.rb Mon Sep 24 11:59:04 2012
@@ -413,12 +413,126 @@ module Buildr
end
end
+ module Plugin
+ include Extension
+
+ NATURE = 'org.eclipse.pde.PluginNature'
+ CONTAINER = 'org.eclipse.pde.core.requiredPlugins'
+ BUILDERS = ['org.eclipse.pde.ManifestBuilder',
'org.eclipse.pde.SchemaBuilder']
+
+ after_define do |project|
+ eclipse = project.eclipse
+
+ # smart defaults
+ if eclipse.natures.empty? && (
+ (File.exists? project.path_to("plugin.xml")) ||
+ (File.exists? project.path_to("OSGI-INF")) ||
+ (File.exists?(project.path_to("META-INF/MANIFEST.MF")) &&
File.read(project.path_to("META-INF/MANIFEST.MF")).match(/^Bundle-SymbolicName:/)))
+ eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
+ eclipse.classpath_containers = [CONTAINER,
Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
+ eclipse.builders = BUILDERS + [Buildr::Eclipse::Java::BUILDER] if
eclipse.builders.empty?
+ end
+
+ # :plugin nature explicitly set
+ if eclipse.natures.include? :plugin
+ unless eclipse.natures.include? NATURE
+ # plugin nature must be before java nature
+ eclipse.natures += [Buildr::Eclipse::Java::NATURE] unless
eclipse.natures.include? Buildr::Eclipse::Java::NATURE
+ index = eclipse.natures.index(Buildr::Eclipse::Java::NATURE) || -1
+ eclipse.natures = eclipse.natures.insert(index, NATURE)
+ end
+ unless eclipse.classpath_containers.include? CONTAINER
+ # plugin container must be before java container
+ index =
eclipse.classpath_containers.index(Buildr::Eclipse::Java::CONTAINER) || -1
+ eclipse.classpath_containers =
eclipse.classpath_containers.insert(index, CONTAINER)
+ end
+ unless (eclipse.builders.include?(BUILDERS[0]) &&
eclipse.builders.include?(BUILDERS[1]))
+ # plugin builder must be before java builder
+ index =
eclipse.classpath_containers.index(Buildr::Eclipse::Java::BUILDER) || -1
+ eclipse.builders = eclipse.builders.insert(index, BUILDERS[1])
unless eclipse.builders.include? BUILDERS[1]
+ index = eclipse.classpath_containers.index(BUILDERS[1]) || -1
+ eclipse.builders = eclipse.builders.insert(index, BUILDERS[0])
unless eclipse.builders.include? BUILDERS[0]
+ end
+ end
+ end
+ end
+
+ module Scala
+ include Extension
+
+ NATURE = 'ch.epfl.lamp.sdt.core.scalanature'
+ CONTAINER = 'ch.epfl.lamp.sdt.launching.SCALA_CONTAINER'
+ BUILDER = 'ch.epfl.lamp.sdt.core.scalabuilder'
+
+ after_define :eclipse => :eclipse_scala
+ after_define :eclipse_scala do |project|
+ eclipse = project.eclipse
+ # smart defaults
+ if eclipse.natures.empty? && (project.compile.language == :scala ||
project.test.compile.language == :scala)
+ eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
+ eclipse.classpath_containers = [CONTAINER,
Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
+ eclipse.builders = BUILDER if eclipse.builders.empty?
+ eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
+ end
+
+ # :scala nature explicitly set
+ if eclipse.natures.include? :scala
+ unless eclipse.natures.include? NATURE
+ # scala nature must be before java nature
+ eclipse.natures += [Buildr::Eclipse::Java::NATURE] unless
eclipse.natures.include? Buildr::Eclipse::Java::NATURE
+ index = eclipse.natures.index(Buildr::Eclipse::Java::NATURE) || -1
+ eclipse.natures = eclipse.natures.insert(index, NATURE)
+ end
+ unless eclipse.classpath_containers.include? CONTAINER
+ # scala container must be before java container
+ index =
eclipse.classpath_containers.index(Buildr::Eclipse::Java::CONTAINER) || -1
+ eclipse.classpath_containers =
eclipse.classpath_containers.insert(index, CONTAINER)
+ end
+ unless eclipse.builders.include? BUILDER
+ # scala builder overrides java builder
+ eclipse.builders -= [Buildr::Eclipse::Java::BUILDER]
+ eclipse.builders += [BUILDER]
+ end
+ eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
+ end
+ end
+ end
+
+ module Java
+ include Extension
+
+ NATURE = 'org.eclipse.jdt.core.javanature'
+ CONTAINER = 'org.eclipse.jdt.launching.JRE_CONTAINER'
+ BUILDER = 'org.eclipse.jdt.core.javabuilder'
+
+ after_define do |project|
+ eclipse = project.eclipse
+
+ # smart defaults
+ if project.compile.language == :java || project.test.compile.language
== :java
+ eclipse.natures = NATURE if eclipse.natures.empty?
+ eclipse.classpath_containers = CONTAINER if
eclipse.classpath_containers.empty?
+ eclipse.builders = BUILDER if eclipse.builders.empty?
+ end
+
+ # :java nature explicitly set
+ if eclipse.natures.include? :java
+ eclipse.natures += [NATURE] unless eclipse.natures.include? NATURE
+ eclipse.classpath_containers += [CONTAINER] unless
eclipse.classpath_containers.include? CONTAINER
+ eclipse.builders += [BUILDER] unless eclipse.builders.include?
BUILDER
+ end
+ end
+ end
+
end
end # module Buildr
class Buildr::Project
include Buildr::Eclipse
+ include Buildr::Eclipse::Plugin
+ include Buildr::Eclipse::Scala
+ include Buildr::Eclipse::Java
end