class LicenseAuto::Maven

Constants

DEPENDENCY_PATTERN
LANGUAGE

Public Class Methods

check_cli() click to toggle source
# File lib/license_auto/package_manager/maven.rb, line 122
def self.check_cli
  cmd = 'mvn -v'
  stdout_str, stderr_str, _status = Open3.capture3(cmd)
  if stdout_str.include?('Apache Maven 3')
    true
  else
    LicenseAuto.logger.error("stdout_str: #{stdout_str}, stderr_str: #{stderr_str}")
    false
  end
end
new(path) click to toggle source
Calls superclass method LicenseAuto::PackageManager::new
# File lib/license_auto/package_manager/maven.rb, line 16
def initialize(path)
  super(path)
end

Public Instance Methods

collect_dependencies() click to toggle source

@return example

> Array: [{:name=>“junit:junit”, :version=>“4.8”, :remote=>nil}]

# File lib/license_auto/package_manager/maven.rb, line 44
def collect_dependencies
  deps =
      if resolve_dependencies
        list_dependencies.map {|dep|
          group, name, type, version, scope = dep.split(':')
          {
              name: [group, name].join(':'),
              version: version,
              remote: nil
          }
        }
      else
        []
      end
  LicenseAuto.logger.debug(deps)
  deps
end
dependency_file_pattern() click to toggle source
# File lib/license_auto/package_manager/maven.rb, line 20
def dependency_file_pattern
  /#{@path}\/pom\.xml$/i
end
list_dependencies() click to toggle source

Command output sample:

INFO
INFO

INFO

Building GitHub Maven Plugin Example 0.1-SNAPSHOT

INFO

INFO
INFO

— maven-dependency-plugin:2.8:list (default-cli) @ github-maven-example —

INFO
INFO

The following files have been resolved:

INFO

junit:junit:jar:4.8:test

INFO
INFO

INFO

BUILD SUCCESS

INFO

INFO

Total time: 1.819 s

INFO

Finished at: 2016-04-18T15:26:58+08:00

INFO

Final Memory: 14M/155M

INFO

@return sample:

Set.new(["junit:junit:jar:4.8:test"])
# File lib/license_auto/package_manager/maven.rb, line 98
def list_dependencies
  if resolve_dependencies
    deps = Set.new
    Dir.chdir(@path) do
      cmd = 'mvn dependency:list'
      out, err, _st = Open3.capture3(cmd)
      # LicenseAuto.logger.debug("#{out}")
      if out.include?("The following files have been resolved:")
        out.split("\n").each {|line|
          matched = DEPENDENCY_PATTERN.match(line)
          # LicenseAuto.logger.debug("#{line}, matched: #{matched}")
          if matched
            group_name_version = line.gsub!(/\[INFO\]/,'').strip!
            deps.add(group_name_version)
          end
        }
      else
        LicenseAuto.logger.error("#{err}")
      end
    end
    deps
  end
end
parse_dependencies() click to toggle source
# File lib/license_auto/package_manager/maven.rb, line 24
def parse_dependencies
  build_files = dependency_file_path_names
  if build_files.empty?
    LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
    []
  else
    build_files.map {|dep_file|
      LicenseAuto.logger.debug(dep_file)

      {
          dep_file: dep_file,
          deps: collect_dependencies
      }
    }
  end
  # LicenseAuto.logger.debug(JSON.pretty_generate(deps))
end
resolve_dependencies() click to toggle source
# File lib/license_auto/package_manager/maven.rb, line 62
def resolve_dependencies
  bool = false
  Dir.chdir(@path) do
    cmd = 'mvn dependency:resolve'
    stdout_str, stderr_str, _status = Open3.capture3(cmd)
    if stdout_str.length > 0
      # LicenseAuto.logger.debug("stdout_str: #{stdout_str}")
      if stdout_str.include?("[INFO] BUILD SUCCESS")
        bool = true
      end
    end
  end
  bool
end