Class: MiniAether::Resolver
- Inherits:
-
Object
- Object
- MiniAether::Resolver
- Includes:
- Helper
- Defined in:
- lib/mini_aether/resolver.rb
Constant Summary collapse
- RepositorySystem =
Java::OrgSonatypeAether::RepositorySystem
- MavenRepositorySystemSession =
Java::OrgApacheMavenRepositoryInternal::MavenRepositorySystemSession
- LocalRepository =
Java::OrgSonatypeAetherRepository::LocalRepository
- DefaultServiceLocator =
Java::OrgApacheMavenRepositoryInternal::DefaultServiceLocator
- RepositoryConnectorFactory =
Java::OrgSonatypeAetherSpiConnector::RepositoryConnectorFactory
- AsyncRepositoryConnectorFactory =
Java::OrgSonatypeAetherConnectorAsync::AsyncRepositoryConnectorFactory
- FileRepositoryConnectorFactory =
Java::OrgSonatypeAetherConnectorFile::FileRepositoryConnectorFactory
- Artifact =
Java::OrgSonatypeAetherUtilArtifact::DefaultArtifact
- Dependency =
Java::OrgSonatypeAetherGraph::Dependency
- RemoteRepository =
Java::OrgSonatypeAetherRepository::RemoteRepository
- CollectRequest =
Java::OrgSonatypeAetherCollection::CollectRequest
- DependencyRequest =
Java::OrgSonatypeAetherResolution::DependencyRequest
- PreorderNodeListGenerator =
Java::OrgSonatypeAetherUtilGraph::PreorderNodeListGenerator
- LOCATOR =
set up connectors for service locator
DefaultServiceLocator.new
- MiB_PER_BYTE =
1024.0*1024.0
Constants included from Helper
Instance Method Summary collapse
-
#initialize ⇒ Resolver
constructor
A new instance of Resolver.
- #new_artifact(hash) ⇒ Object
-
#resolve(dep_hashes, repos) ⇒ Java::JavaUtil::List<Java::JavaIo::File>
Resolve a set of dependencies
dep_hashes
from repositoriesrepos
. -
#resolve_foreign(deps_data, repos_data) ⇒ Object
Load dumps of the
dep_hashes
andrepos
args usingMarshal.load
and then call #resolve.
Methods included from Helper
#interpolate, #jar_path, #local_repository_path
Constructor Details
#initialize ⇒ Resolver
Returns a new instance of Resolver.
65 66 67 68 69 70 71 72 |
# File 'lib/mini_aether/resolver.rb', line 65 def initialize @logger = Java::OrgSlf4j::LoggerFactory.getLogger(self.class.to_s) @system = LOCATOR.getService(RepositorySystem.java_class) @session = MavenRepositorySystemSession.new local_repo = LocalRepository.new(local_repository_path) local_manager = @system.newLocalRepositoryManager(local_repo) @session.setLocalRepositoryManager(local_manager) end |
Instance Method Details
#new_artifact(hash) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/mini_aether/resolver.rb', line 74 def new_artifact(hash) Artifact.new(hash[:group_id], hash[:artifact_id], hash[:extension] || 'jar', hash[:version]) end |
#resolve(dep_hashes, repos) ⇒ Java::JavaUtil::List<Java::JavaIo::File>
Resolve a set of dependencies dep_hashes
from repositories repos
.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/mini_aether/resolver.rb', line 102 def resolve(dep_hashes, repos) @logger.info 'resolving dependencies' collect_req = CollectRequest.new dep_hashes.each do |hash| dep = Dependency.new new_artifact(hash), 'compile' collect_req.addDependency dep @logger.debug 'requested {}', dep end repos.each do |uri| repo = RemoteRepository.new(uri.object_id.to_s, 'default', uri) collect_req.addRepository repo @logger.info 'added repository {}', repo.getUrl enabled = [] enabled << 'releases' if repo.getPolicy(false).isEnabled enabled << 'snapshots' if repo.getPolicy(true).isEnabled @logger.debug '{}', enabled.join('+') end node = @system.collectDependencies(@session, collect_req).getRoot dependency_req = DependencyRequest.new(node, nil) @system.resolveDependencies(@session, dependency_req) nlg = PreorderNodeListGenerator.new node.accept nlg if @logger.isDebugEnabled total_size = 0 nlg.getArtifacts(false).each do |artifact| file = artifact.file size = File.stat(artifact.file.absolute_path).size total_size += size @logger.debug("Using %0.2f %s" % [size/MiB_PER_BYTE, artifact]) end @logger.debug(' -----') @logger.debug(" %0.2f MiB total" % [total_size/MiB_PER_BYTE]) else nlg.getArtifacts(false).each do |artifact| @logger.info 'Using {}', artifact end end nlg.getFiles end |
#resolve_foreign(deps_data, repos_data) ⇒ Object
Load dumps of the dep_hashes
and repos
args using Marshal.load
and then call #resolve. Useful for when the dependencies and repositories are constructed under a different Java classloader.
85 86 87 |
# File 'lib/mini_aether/resolver.rb', line 85 def resolve_foreign(deps_data, repos_data) resolve(Marshal.load(deps_data), Marshal.load(repos_data)) end |