Class: LicenseAuto::Maven
- Inherits:
-
PackageManager
- Object
- PackageManager
- LicenseAuto::Maven
- Defined in:
- lib/license_auto/package_manager/maven.rb
Constant Summary collapse
- LANGUAGE =
'Java'- DEPENDENCY_PATTERN =
/^\[INFO\]\s+(?<group>.+):(?<name>.+):(?<type>.+):(?<version>.+):(?<scope>(compile|provided|runtime|test|system|import))$/
Class Method Summary collapse
Instance Method Summary collapse
-
#collect_dependencies ⇒ Object
> Array: [:version=>“4.8”, :remote=>nil].
- #dependency_file_pattern ⇒ Object
-
#initialize(path) ⇒ Maven
constructor
A new instance of Maven.
-
#list_dependencies ⇒ Object
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] ————————————————————————.
- #parse_dependencies ⇒ Object
- #resolve_dependencies ⇒ Object
Methods inherited from PackageManager
#check_cli, #dependency_file_path_names
Constructor Details
#initialize(path) ⇒ Maven
Returns a new instance of Maven.
16 17 18 |
# File 'lib/license_auto/package_manager/maven.rb', line 16 def initialize(path) super(path) end |
Class Method Details
.check_cli ⇒ Object
122 123 124 125 126 127 128 129 130 131 |
# 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 |
Instance Method Details
#collect_dependencies ⇒ Object
> Array: [:version=>“4.8”, :remote=>nil]
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# 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 ⇒ Object
20 21 22 |
# File 'lib/license_auto/package_manager/maven.rb', line 20 def dependency_file_pattern /#{@path}\/pom\.xml$/i end |
#list_dependencies ⇒ Object
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
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# 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 ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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 ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# 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 |