【问题标题】:Install all modules artifacts to custom maven repository using Gradle and Android Studio使用 Gradle 和 Android Studio 将所有模块工件安装到自定义 maven 存储库
【发布时间】:2015-10-22 13:06:57
【问题描述】:

我有一个在我的 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
}

我从命令行运行时遇到的错误是:

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 文件中复制了所有代码,我讨厌这种解决方案......

【问题讨论】:

  • 同时使用 mavenInstaller 或 mavenDeployer 都不起作用......唯一的区别是 mavenDeployer 符合存储库但忽略它

标签: android maven android-studio gradle android-gradle-plugin


【解决方案1】:

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

而不是声明:

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

改成:

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

我不知道为什么,但现在我尝试的每个配置都可以工作......

【讨论】:

【解决方案2】:

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

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

publishing {
    repositories {
        maven {
            url MAVEN_LOCAL_PATH
        }
    }
}

【讨论】:

  • 这不起作用,因为最终它不会将工件安装到自定义文件夹中。
  • 这很奇怪...查看我所做的编辑,我发现在寻找其他内容时..希望对您有所帮助:)
  • 另外请注意,我正在尝试将工件安装到自定义仓库而不是默认的本地仓库
  • 将它放在uploadArchives 之前或之后。我认为它背后的逻辑类似于发布到远程仓库。但我想我错了。我在某处看到您可以编辑 settings.xml 文件以更改默认本地存储库,您可以随时尝试,即使它只是为了测试 :)
  • 我不知道发生了什么变化,但突然之间它一直有效...我已经恢复到发布此之前的第一时刻,现在它有效...我没有更改文件中的任何内容并检查拼写错误,什么都没有……真的很奇怪 joojoo
猜你喜欢
  • 2012-05-20
  • 2016-11-07
  • 1970-01-01
  • 2010-09-24
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多