Class: JavaClass::Classpath::MavenClasspath

Inherits:
CompositeClasspath show all
Defined in:
lib/javaclass/classpath/maven_classpath.rb

Overview

A Maven folder structure aware classpath. Maven submodules are supported.

Author

Peter Kofler

Constant Summary collapse

POM_XML =
'pom.xml'

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CompositeClasspath

#__old__add_element__, #accessed, #add_element, #add_file_name, #all_accessed, #count, #elements, #includes?, #load_binary, #mark_accessed, #names, #reset_access, #to_s

Methods inherited from FileClasspath

#==, #additional_classpath, #elements, #jar?, #to_key, #to_s

Constructor Details

#initialize(folder) ⇒ MavenClasspath

Create a classpath for a Maven base project folder



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/javaclass/classpath/maven_classpath.rb', line 18

def initialize(folder)
  unless MavenClasspath::valid_location?(folder)
    raise IOError, "folder #{folder} not a Maven project"
  end
  pom = File.join(folder, POM_XML)
  super(pom)
  add_if_exist(File.join(folder, 'target/classes'))
  add_if_exist(File.join(folder, 'target/test-classes'))

  # look for submodules
  Dir.entries(folder).each do |dir|
    next if dir =~ /^(?:\.|\.\.|src|target|pom.xml|\.settings)$/
    folder = File.join(folder, dir)
    add_element(MavenClasspath.new(folder)) if MavenClasspath::valid_location?(folder)
  end
end

Class Method Details

.valid_location?(file) ⇒ Boolean

Check if the file is a valid location for a Maven classpath.

Returns:

  • (Boolean)


13
14
15
# File 'lib/javaclass/classpath/maven_classpath.rb', line 13

def self.valid_location?(file)
  FileTest.exist?(file) && FileTest.directory?(file) && FileTest.exist?(File.join(file, POM_XML))
end