【问题标题】:Use gradle to upload jar to local Maven repository使用 gradle 上传 jar 到本地 Maven 仓库
【发布时间】:2014-10-03 16:55:50
【问题描述】:

这个问题已经被问过好几次了,但不知怎的,我无法解决这个问题。 Gradle 是一个很棒的工具,但它的文档却不是很好。没有例子让不每天使用它的人几乎无法理解。

我正在使用 Android Studio,我想将我的模块输出 jar 上传到我的本地 Maven 存储库。

apply plugin: 'java'

dependencies {
    compile 'com.google.http-client:google-http-client-android:1.18.0-rc'
}


apply plugin: 'maven'
configure(install.repositories.mavenInstaller) {
    pom.project {
        groupId 'com.example'
        artifactId 'example'
        packaging 'jar'
    }
}

当我在 Android Studio 中开始构建时,我可以在 Gradle 选项卡上看到

:install

被调用。我还在构建文件夹中获得了一个新 jar,但该 jar 未上传到 Maven。 [Maven repo 存在,Google appengine gradle 插件可以从同一项目的另一个模块上传其 jar。]

我错过了什么?

【问题讨论】:

  • 您确定要安装到本地 Maven 存储库中吗?你怎么知道它不工作?
  • 您将哪个路径作为“本地 maven 存储库”?只要确保我们在同一页面上..
  • @Peter Niederwieser 是的,我想安装到我的本地 Maven 存储库中,因为我有多个项目,其中一个项目的输出用作另一个项目的输入,我需要快速修复以获取库在我的本地机器上交换。我们计划稍后使用私有托管的存储库。本地和远程仓库的设置完全不同,对吧?这就是你问的原因吗?
  • @gerrytan 路径是我的本地用户目录,然后是 .m2,它已在我的 Windows 环境中正确设置,因为我可以使用 mavenLocal() 从那里提取存储库。
  • 我对 Gradle 不是 100% 熟悉,但我猜文档很薄的原因是它基于 Maven。尝试通过doco for maven-install-plugin。使用普通的 maven,我通常只需要运行 install 目标来确保我的工件被部署到本地存储库

标签: maven gradle android-studio


【解决方案1】:

我怀疑问题在于您只是在编辑 POM(通过pom.project),而不是配置用于安装的实际 Maven 坐标。请尝试以下方法:

// best way to set group ID
group = 'com.example'

install {
    repositories.mavenInstaller {
        // only necessary if artifact ID diverges from project name
        // the latter defaults to project directory name and can be
        // configured in settings.gradle
        pom.artifactId = 'myName' 
        // shouldn't be needed as this is the default anyway
        pom.packaging = 'jar'
    }
}

PS:完整 Gradle 发行版中的 samples 目录包含许多示例构建,也适用于 maven 插件。

【讨论】:

  • 谢谢@Peter Niederwieser,这解决了我的问题。我添加了 pom.version = "v1-1.0-SNAPSHOT" 因为版本生成为“未定义”。不确定这是否是正确的方法,或者它是否可以以某种方式从 Android Studio 项目/模块派生,但它现在可以工作。
  • 最好的方法是设置version,类似于设置group
  • 我收到错误:未找到 Gradle DSL 方法:'install()',我使用的是 Gradle 2.1。
  • 可能意味着您没有应用maven 插件。
  • 澄清一下:执行gradle install时会进行上传
【解决方案2】:

Peter N 在接受的答案的 cmets 中是正确的,这有效,但不应该是接受的答案。

你应该在你的 build.gradle 文件里有这个

apply plugin: "maven"

然后你可以做一个

$ ./gradlew install

或者使用内置任务

$ ./gradlew publishToMavenLocal

这两种方法都将工件安装在 $HOME/.m2/com/example/example/version

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2015-01-01
    • 2021-12-11
    • 2017-05-02
    相关资源
    最近更新 更多