【发布时间】:2021-02-20 20:39:45
【问题描述】:
我目前有一个离线环境,其中有我所有的依赖项(jar、aar 和 pom 文件)。问题是我想在我的 Android 项目中使用 Coil(图像库)作为依赖项。这个库需要kotlinx-coroutines-core 也可以下载到我的环境中。我已经能够下载除.module 文件(Gradle 模块元数据)之外的所有必需文件,这是必需的,因为kotlinx-coroutines-core 有多种变体(JVM、JS 和 Native 的版本)。
换句话说,我的代码下载了kotlinx-coroutines-core-jvm-1.3.9.jar(及其POM)和kotlinx-coroutines-core-1.3.9.pom,这很好,但kotlinx-coroutines-core-1.3.9.module文件仍然丢失,我不知道如何下载它。
这是我基于this gist的代码:
task copyDependencies() {
def name = "default"
def configuration = configurations.getByName(name)
copyJars(configuration)
copyPoms(configuration)
}
private void copyJars(Configuration configuration) {
File repoDir = new File(project.buildDir, 'repository')
configuration.resolvedConfiguration.resolvedArtifacts.each { artifact ->
def moduleVersionId = artifact.moduleVersion.id
File moduleDir = new File(repoDir, "${moduleVersionId.group.replace('.', '/')}/${moduleVersionId.name}/${moduleVersionId.version}")
GFileUtils.mkdirs(moduleDir)
GFileUtils.copyFile(artifact.file, new File(moduleDir, artifact.file.name))
}
}
private void copyPoms(Configuration configuration) {
def componentIds = configuration.incoming.resolutionResult.allDependencies.collect { it.selected.id }
def result = project.dependencies.createArtifactResolutionQuery()
.forComponents(componentIds)
.withArtifacts(MavenModule, MavenPomArtifact)
.execute()
for (component in result.resolvedComponents) {
def componentId = component.id
if (componentId instanceof ModuleComponentIdentifier) {
File repoDir = new File(project.buildDir, 'repository')
File moduleDir = new File(repoDir, "${componentId.group.replace('.', '/')}/${componentId.module}/${componentId.version}")
GFileUtils.mkdirs(moduleDir)
File pomFile = component.getArtifacts(MavenPomArtifact)[0].file
GFileUtils.copyFile(pomFile, new File(moduleDir, pomFile.name))
}
}
}
所以我的问题是:下载依赖项时如何下载.module 文件?一个例子是下载这个file。
【问题讨论】: