问题标签 [maven-publish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
65 浏览

android - Android:带有 play-services-auth 的库项目导致 NoClassDefFoundError

(这与 Android 中的问题基本相同:带有 Retrofit 的库项目导致 NoClassDefFoundError但为play-services-auth)。


我正在尝试构建一个使用 play-services-auth 来访问 SmartLock 以获取密码的 android 库项目。

只要我使用api而不是implementation依赖于com.google.android.gms:play-services-auth. 似乎这是唯一需要这个的依赖项(所有其他依赖项都可以与 一起使用implementation)。

implementation这里使用时,调用应用程序将崩溃NoClassDefFoundError

java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/api/GoogleApiClient$Builder;


我正在使用consumerProguardFiles一堆 proguard-rule-files(例如,来自这个repo的一个用于 okhttp3、retrofit2 等)。所有这些都将被打包到一个 AAR 中,因此还应该添加依赖项中的规则。

似乎我缺少play-services-auth. com.google.android.gms:play-services-auth有人可以发布在图书馆项目中使用的规则吗?

0 投票
2 回答
867 浏览

android - Maven-Publish 不在 POM 中发布 API/实现依赖项

maven-publish在 gradle 中使用插件来发布工件。我需要生成一个包含依赖项的 POM 文件,以便我的消费者可以获取所需的依赖项。

由于maven-publish默认情况下不包含对 POM 文件的依赖项,因此我不得不使用

compile在我将关键字换成apior之前,这一切对我来说都很好Implementation。发布的 POM 不包含任何依赖项,使用关键字apiImplementation. 我不得不使用compile它来使它包含在 POM 文件中,我在这里遗漏了什么吗?

0 投票
0 回答
127 浏览

java - 如果项目未更改,请勿将工件发布到 Nexus

我有两个项目作为我的多项目构建的一部分,ProjectA并且ProjectB.

ProjectAcompile依赖于ProjectB. 我也有自动版本号增量,每个项目都包含一个versions.json包含最新版本号的文件。我有 gradle 脚本,可以在gradle publish.

现在,当对 进行更改ProjectA并执行 a时gradle clean publishProjectB也会将其部署到 Nexus,即使它没有更改。我怎样才能阻止这种情况发生?

请注意,构建总是从干净完成,因为这个过程是由我们的 CI 服务器发生的,并且总是从一个新的克隆完成,所以像下面这样的解决方案不起作用:

如果工件与上游的最新副本不同,我如何确保工件仅发布到 Nexus?也许解决这个问题的一种方法是不在publish依赖项目上运行。但是怎么做?

0 投票
0 回答
164 浏览

gradle - Bintray 插件不拾取 artefact 版本

我正在尝试使用官方Gradle 插件将我的人工制品部署到 Bintray 。与我的预期相反,该插件不使用 build.gradle 中设置的版本,而是自动生成一个随机版本字符串,如下所示:

我的 build.gradle 看起来像这样。我将自己的配置与网上的几个配置进行了比较,但没有发现任何差异。

0 投票
1 回答
713 浏览

android - 通过 s3 未解决来自 gradle maven 依赖项的引用

我尝试将库发布到私有 S3 Maven 存储库。上传受密码保护,但下载库对公众开放。aar 文件上传没有问题(连同 pom/md5/sha1),我可以在我的 S3 存储桶中看到它,下载它,甚至手动将此 aar 作为依赖项添加到我的项目中。但是,当我像这样加载此依赖项时:

……有问题。Gradle 同步完成没有问题,看起来 aar 已经下载,但它从未出现在 Android Studio 的“外部库”部分中,并且代码不可用(Unresolved reference: MyLib)。

当然,我尝试重建、使缓存无效并将其应用于不同的项目。

任何想法如何使它工作?

这就是 maven-publish 代码的样子。

0 投票
1 回答
184 浏览

android - 使用 Square 的 Wire 时出现 D8 异常

在 Android 项目中添加 Square 的Wire库以支持 Protobuf 后,我在编译期间收到以下 D8 异常:

D8:程序类型已经存在:com.google.protobuf.DescriptorProto$ExtensionRange$ProtoAdapter_ExtensionRange

电线依赖:implementation 'com.squareup.wire:wire-runtime:2.2.0'

GradledependencyInsight在我的项目中揭示了另一个依赖项,即传递引入com.google.protobuf.nano:protobuf-javanano:3.1.0. 所以我添加了一个排除:

但这并没有解决问题。

是什么让 D8 悲伤,我怎样才能让它再次快乐?

更新

有问题的设置是:有 3 个模块A, B, C. A取决于BCB并且C都托管在内部 maven 服务器上,它们都依赖于wire-runtime以下 POM 条目:

我试过 Wire 版本 2.2 和 2.3.0。A当只依赖B或只依赖时,一切都是桃色的,但是当同时依赖和C时,D8 会变得悲伤。ABC

那么你如何依赖于传递依赖于 Wire 的多个模块呢?

0 投票
3 回答
2999 浏览

android - 发布无法解决对具有多个具有不同坐标的发布的项目的依赖关系

我有 2 个 lib 模块 : library, library2, 并使用android-maven-publish发布具有 multi-productFlavors 的多模块 android 项目

build.gradle在图书馆:

build.gradle在图书馆2中:

发布.gradle:

当我在库中运行任务publish时,出现以下错误:

如果我apply from: '../publish.gradle'build.gradlelibrary2 中删除,任务:library:publish可以成功运行。但因为我要library2独立发表,所以library2必须apply from: '../publish.gradle'

我该怎么办这个错误?谢谢。

环境:gradle 4.4 ~ 4.9-rc1

0 投票
1 回答
5515 浏览

java - Gradle 的 Maven 发布插件未将 POM 或正确版本发布到 Maven 本地

我正在尝试让 Gradle Maven 发布插件将我的 Java 库的快照版本发布到我的本地 Maven 存储库,这样:

  1. jar 的版本是,当前系统时间在1.0.0.SNAPSHOT-<timestamp>哪里(以毫秒为单位)(类似于类似的东西);和<timestamp> System.currentTimeInMillis()
  2. 我登录到 STDOUT/console 正在发布的 jar 的全名,包括上面的版本;和
  3. 格式正确的 pom.xml 与 jar 一起发布到本地 Maven,以便任何其他 Gradle/Maven 项目可以在本地“拉下”并正确获取其传递依赖项

到目前为止我最好的尝试:

但是,使用此设置,当我运行时./gradlew publishToMavenLocal

  • 我确实看到 jar 被部署到~/.m2/repository/com/me/my-lib/但没有 pom.xml 并且没有1.0.0.SNAPSHOT附加版本
  • 我什至不知道如何/在哪里将时间戳附加到版本上
  • 我什至不知道如何/在哪里println(...)报告正在发布的 jar 的全名

有任何想法吗?

0 投票
2 回答
10337 浏览

gradle - 为什么找不到android gradle maven发布工件bundleRelease

当我同步项目时,android studio 会发出警告could not get unknown property 'bundleRelease' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

我添加project.afterEvaluate{//block}了,但它不起作用。我应该怎么做才能设置artifact

0 投票
0 回答
288 浏览

gradle - 在多模块 gradle 项目中使用 maven-publish 插件没有依赖关系的 pom.xml

我有一个带有子项目的 gradle 项目。每个子项目都会生成一个 jar 和一个 pom,并将其发布在存储库中

1) 在主项目 gradle 文件中有一个子项目部分,我用它来定义发布内容和发布位置:

来自 rootproject.gradle 的片段:

2) 在我的一个子项目的 gradle 文件中,我添加了一些依赖项:

来自 subproject.gradle 的片段:

如果我从 rootproject 运行“ gradle publish ”,它将正确发布每个子项目。但是,我注意到与子项目相关的 pom 发布中缺少子项目中定义的依赖项。

如果我在每个子项目中剪切并粘贴子项目部分的内容,则生成的 pom 文件包含正确的依赖项。似乎“<strong>from components.java”不是对发布任务应该用来生成pom的东西的引用,但是当您调用“from”方法时,该任务将准确发布 components.java 包含的内容.

作为一种解决方法,我在根中定义的方法中移动了子项目代码:

根项目.gradle

我从每个子项目中调用它:

子项目.gradle

另一种解决方案可能是在子项目部分添加一个开关,并将所有内容集中在根项目的 gradle 文件中:

这是一种可接受的方法吗?是否有最佳实践可以遵循?有更简单的方法吗?