Class: MiniAether::Resolver
- Inherits:
-
Object
- Object
- MiniAether::Resolver
- 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
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.
Constructor Details
#initialize ⇒ Resolver
Returns a new instance of Resolver.
63 64 65 66 67 68 69 70 |
# File 'lib/mini_aether/resolver.rb', line 63 def initialize @logger = Java::OrgSlf4j::LoggerFactory.getLogger(self.class.to_s) @system = LOCATOR.getService(RepositorySystem.java_class) @session = MavenRepositorySystemSession.new local_repo = LocalRepository.new(MiniAether.local_repository_path) local_manager = @system.newLocalRepositoryManager(local_repo) @session.setLocalRepositoryManager(local_manager) end |
Instance Method Details
#new_artifact(hash) ⇒ Object
72 73 74 75 76 77 |
# File 'lib/mini_aether/resolver.rb', line 72 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
.
100 101 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 |
# File 'lib/mini_aether/resolver.rb', line 100 def resolve(dep_hashes, repos) @logger.info 'resolving dependencies ({})', dep_hashes.size collect_req = CollectRequest.new dep_hashes.each do |hash| dep = Dependency.new new_artifact(hash), 'compile' collect_req.addDependency dep @logger.info '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 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 files = nlg.getFiles @logger.info "resolved with #{files.size} artifacts" 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("%0.2fMiB %s (%s)" % [size/MiB_PER_BYTE, artifact, file.name]) end @logger.debug("%0.3f MiB total" % [total_size/MiB_PER_BYTE]) end files 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.
83 84 85 |
# File 'lib/mini_aether/resolver.rb', line 83 def resolve_foreign(deps_data, repos_data) resolve(Marshal.load(deps_data), Marshal.load(repos_data)) end |