class Jars::MavenSettings
def cleanup
def cleanup File.unlink(effective_settings) if effective_settings != settings ensure reset end
def effective_settings
def effective_settings @_jars_effective_maven_settings_ = nil unless instance_variable_defined?(:@_jars_effective_maven_settings_) if @_jars_effective_maven_settings_.nil? begin require 'rubygems/request' http = Gem::Request.proxy_uri(Gem.configuration[:http_proxy] || Gem::Request.get_proxy_from_env('http')) https = Gem::Request.proxy_uri(Gem.configuration[:https_proxy] || Gem::Request.get_proxy_from_env('https')) rescue Jars.debug('ignore rubygems proxy configuration as rubygems is too old') end @_jars_effective_maven_settings_ = if http.nil? && https.nil? settings else setup_interpolated_settings(http, https) || settings end end @_jars_effective_maven_settings_ end
def global_settings
def global_settings @_jars_maven_global_settings_ = nil unless instance_variable_defined?(:@_jars_maven_global_settings_) if @_jars_maven_global_settings_.nil? if (mvn_home = ENV['M2_HOME'] || ENV['MAVEN_HOME']) settings = File.join(mvn_home, 'conf/settings.xml') settings = false unless File.exist?(settings) else settings = false end @_jars_maven_global_settings_ = settings end @_jars_maven_global_settings_ || nil end
def local_settings
def local_settings @_jars_maven_local_settings_ = nil unless instance_variable_defined?(:@_jars_maven_local_settings_) if @_jars_maven_local_settings_.nil? settings = Jars.absolute('settings.xml') @_jars_maven_local_settings_ = if settings && File.exist?(settings) settings else false end end @_jars_maven_local_settings_ || nil end
def raw_proxy_settings_xml(http, https)
def raw_proxy_settings_xml(http, https) raw = File.read(File.join(File.dirname(__FILE__), 'settings.xml')) if http raw.sub!('__HTTP_ACTIVE__', 'true') raw.sub!('__HTTP_SERVER__', http.host) raw.sub!('__HTTP_PORT__', http.port.to_s) else raw.sub!('__HTTP_ACTIVE__', 'false') end if https raw.sub!('__HTTPS_ACTIVE__', 'true') raw.sub!('__HTTPS_SERVER__', https.host) raw.sub!('__HTTPS_PORT__', https.port.to_s) else raw.sub!('__HTTPS_ACTIVE__', 'false') end raw end
def reset
def reset instance_variables.each { |var| instance_variable_set(var, nil) } end
def settings
def settings @_jars_maven_settings_ = nil unless instance_variable_defined?(:@_jars_maven_settings_) local_settings || user_settings if @_jars_maven_settings_.nil? end
def setup_interpolated_settings(http, https)
def setup_interpolated_settings(http, https) proxy = raw_proxy_settings_xml(http, https).gsub("\n", LINE_SEPARATOR) if settings.nil? raw = "<settings>#{LINE_SEPARATOR}#{proxy}</settings>" else raw = File.read(settings) if raw.include?('<proxy>') Jars.warn("can not interpolated proxy info for #{settings}") return else raw.sub!('<settings>', "<settings>#{LINE_SEPARATOR}#{proxy}") end end tempfile = java.io.File.create_temp_file('settings', '.xml') tempfile.delete_on_exit File.write(tempfile.path, raw) tempfile.path end
def user_settings
def user_settings @_jars_maven_user_settings_ = nil unless instance_variable_defined?(:@_jars_maven_user_settings_) if @_jars_maven_user_settings_.nil? if (settings = Jars.absolute(Jars.to_prop(MAVEN_SETTINGS))) unless File.exist?(settings) Jars.warn { "configured ENV['#{MAVEN_SETTINGS}'] = '#{settings}' not found" } settings = false end else # use maven default (user) settings settings = File.join(Jars.user_home, '.m2', 'settings.xml') settings = false unless File.exist?(settings) end @_jars_maven_user_settings_ = settings end @_jars_maven_user_settings_ || nil end