问题标签 [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.
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
有人可以发布在图书馆项目中使用的规则吗?
android - Maven-Publish 不在 POM 中发布 API/实现依赖项
我maven-publish
在 gradle 中使用插件来发布工件。我需要生成一个包含依赖项的 POM 文件,以便我的消费者可以获取所需的依赖项。
由于maven-publish
默认情况下不包含对 POM 文件的依赖项,因此我不得不使用
compile
在我将关键字换成api
or之前,这一切对我来说都很好Implementation
。发布的 POM 不包含任何依赖项,使用关键字api
或Implementation
. 我不得不使用compile
它来使它包含在 POM 文件中,我在这里遗漏了什么吗?
java - 如果项目未更改,请勿将工件发布到 Nexus
我有两个项目作为我的多项目构建的一部分,ProjectA
并且ProjectB
.
ProjectA
compile
依赖于ProjectB
. 我也有自动版本号增量,每个项目都包含一个versions.json
包含最新版本号的文件。我有 gradle 脚本,可以在gradle publish
.
现在,当对 进行更改ProjectA
并执行 a时gradle clean publish
,ProjectB
也会将其部署到 Nexus,即使它没有更改。我怎样才能阻止这种情况发生?
请注意,构建总是从干净完成,因为这个过程是由我们的 CI 服务器发生的,并且总是从一个新的克隆完成,所以像下面这样的解决方案不起作用:
如果工件与上游的最新副本不同,我如何确保工件仅发布到 Nexus?也许解决这个问题的一种方法是不在publish
依赖项目上运行。但是怎么做?
gradle - Bintray 插件不拾取 artefact 版本
我正在尝试使用官方Gradle 插件将我的人工制品部署到 Bintray 。与我的预期相反,该插件不使用 build.gradle 中设置的版本,而是自动生成一个随机版本字符串,如下所示:
我的 build.gradle 看起来像这样。我将自己的配置与网上的几个配置进行了比较,但没有发现任何差异。
android - 通过 s3 未解决来自 gradle maven 依赖项的引用
我尝试将库发布到私有 S3 Maven 存储库。上传受密码保护,但下载库对公众开放。aar 文件上传没有问题(连同 pom/md5/sha1),我可以在我的 S3 存储桶中看到它,下载它,甚至手动将此 aar 作为依赖项添加到我的项目中。但是,当我像这样加载此依赖项时:
……有问题。Gradle 同步完成没有问题,看起来 aar 已经下载,但它从未出现在 Android Studio 的“外部库”部分中,并且代码不可用(Unresolved reference: MyLib
)。
当然,我尝试重建、使缓存无效并将其应用于不同的项目。
任何想法如何使它工作?
这就是 maven-publish 代码的样子。
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
取决于B
和C
。B
并且C
都托管在内部 maven 服务器上,它们都依赖于wire-runtime
以下 POM 条目:
我试过 Wire 版本 2.2 和 2.3.0。A
当只依赖B
或只依赖时,一切都是桃色的,但是当同时依赖和C
时,D8 会变得悲伤。A
B
C
那么你如何依赖于传递依赖于 Wire 的多个模块呢?
android - 发布无法解决对具有多个具有不同坐标的发布的项目的依赖关系
我有 2 个 lib 模块 : library
, library2
, 并使用android-maven-publish发布具有 multi-productFlavors 的多模块 android 项目
build.gradle
在图书馆:
build.gradle
在图书馆2中:
发布.gradle:
当我在库中运行任务publish
时,出现以下错误:
如果我apply from: '../publish.gradle'
在build.gradle
library2 中删除,任务:library:publish
可以成功运行。但因为我要library2
独立发表,所以library2
必须apply from: '../publish.gradle'
我该怎么办这个错误?谢谢。
环境:gradle 4.4 ~ 4.9-rc1
java - Gradle 的 Maven 发布插件未将 POM 或正确版本发布到 Maven 本地
我正在尝试让 Gradle Maven 发布插件将我的 Java 库的快照版本发布到我的本地 Maven 存储库,这样:
- jar 的版本是,当前系统时间在
1.0.0.SNAPSHOT-<timestamp>
哪里(以毫秒为单位)(类似于类似的东西);和<timestamp>
System.currentTimeInMillis()
- 我登录到 STDOUT/console 正在发布的 jar 的全名,包括上面的版本;和
- 格式正确的 pom.xml 与 jar 一起发布到本地 Maven,以便任何其他 Gradle/Maven 项目可以在本地“拉下”并正确获取其传递依赖项
到目前为止我最好的尝试:
但是,使用此设置,当我运行时./gradlew publishToMavenLocal
:
- 我确实看到 jar 被部署到
~/.m2/repository/com/me/my-lib/
但没有 pom.xml 并且没有1.0.0.SNAPSHOT
附加版本 - 我什至不知道如何/在哪里将时间戳附加到版本上
- 我什至不知道如何/在哪里
println(...)
报告正在发布的 jar 的全名
有任何想法吗?
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
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 文件中:
这是一种可接受的方法吗?是否有最佳实践可以遵循?有更简单的方法吗?