使用 Gradle 和 Android Studio 将所有模块工件安装到自定义 Maven 存储库

Install all modules artifacts to custom maven repository using Gradle and Android Studio

我有一个在我的 Android 项目中使用的纯 Java 库,我正在尝试配置它,以便当我 运行 'gradle install' 时它将构建整个项目并将所有工件安装到自定义本地存储库,这显然是一个 git 存储库。

这是模块 gradle 文件,项目构建正常:

group 'com.packagenaem'
def artifact = 'artifactname'
version '1.0.0'
apply plugin: 'java'

def MAVEN_LOCAL_PATH = 'file:///some/path/to/my/repo'

uploadArchives {
    repositories {
        apply plugin: 'maven'
        mavenInstaller {
            repository(url: MAVEN_LOCAL_PATH)
            pom.groupId = group
            pom.artifactId = artifact
            pom.version = version
            pom.packaging = 'jar'
        }
    }
}

task sourcesJar(type: Jar, dependsOn:classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn:javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}

我从命令行 运行ning 得到的错误是:

Could not find method repository() for arguments [{url=file:///some/path/to/my/repo}] on repository container

如果我省略这一行 repository(url: MAVEN_LOCAL_PATH) 那么它会将所有工件很好地安装到 /users/$USER/.m2/repository

===更新===

在执行以下 gradle uploadArchive 时稍微玩了一下之后,我遇到了以下错误:

Failed to deploy artifacts/metadata: No connector available to access repository remote (/some/path/to/my/custom/repo) of type default using the available factories WagonRepositoryConnectorFactory

==== 稍微扩展一下这个问题 ====

所以既然我已经为这个问题设置了悬赏,让我们扩展它并询问我如何制作它以便我将在我的项目 gradle 文件中和在 "gradle uploadArchives" 它会部署所有项目的工件?目前我已经将所有代码复制到我拥有的所有构建 gradle 文件中,我讨厌这种解决方案...

您试过 mavenDeployer 而不是 mavenInstaller 吗? 根据 this 它支持你想做的事情。

编辑: 您是否尝试过将 mavenDeployer 与:

结合使用
publishing {
    repositories {
        maven {
            url MAVEN_LOCAL_PATH
        }
    }
}

好的,所以我在这个上浪费了很多时间和脑细胞...

而不是声明:

repository(url: file("/some/path/to/my/custom/repo"))

改为:

repository url: 'file://' + new File("/some/path/to/my/custom/repo").absolutePath

我不知道为什么,但现在我尝试的每个配置都有效...