标签: maven-publish

使用aar和source jar将Android库发布到Maven

有人可以给我一个关于如何使用maven-publish gradle插件发布带有aar和source jar的com.android.library项目/模块的提示吗?我可以使用旧的maven插件执行此操作 - 但我想使用新的maven-publish插件.

android gradle android-library android-gradle-plugin maven-publish

49
推荐指数
4
解决办法
3万
查看次数

Android Gradle Plugin 8.0 不会自动为 Maven 发布创建软件组件

使用 Gradle7.2和这些插件:

plugins {
    id 'com.android.library' // Android Gradle Plugin 7.1.2
    id 'maven-publish'
}
Run Code Online (Sandbox Code Playgroud)

它仍然有效,但给了我这个弃用警告:

警告:不会自动为 Android Gradle Plugin 8.0 的 Maven 发布创建软件组件。要选择未来的行为,请在文件android.disableAutomaticComponentCreation=true中设置 Gradle 属性gradle.properties或使用新的发布 DSL。

发行说明也提到了它,但这些引用的是过时的文档:

从 AGP 8.0 开始,默认情况下将禁用自动组件创建。目前,AGP 7.1 自动为每个构建变体创建一个与构建变体同名的组件,以及一个包含所有构建变体的 all 组件。此自动组件创建将被禁用。要转换到新行为,您应该通过设置为 来手动禁用自动组件android.disableAutomaticComponentCreation创建true
有关更多信息,请参阅使用 Maven 发布插件


但是在文件中启用 AGP 8.0 默认行为预览时gradle.properties

android.disableAutomaticComponentCreation=true
Run Code Online (Sandbox Code Playgroud)

它找不到属性components.release

FAILURE: Build failed with an exception.

* Where:
Script 'publish.gradle' line: 53

* What went wrong:
A problem …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin maven-publish android-gradle-7.0

29
推荐指数
2
解决办法
4万
查看次数

Android / 任务 checkDebugAarMetadata 执行失败 / 执行 CheckAarMetadataWorkAction 时发生失败

TL\'DR:此 Android Kotlin 库中,我从 Gradle 5.6.4 更新到 6.6.1(提交d5d8d2)。现在我无法再依赖 aar 来构建项目了。

\n

测试设置

\n

我构建aar并将其部署到mavenLocal ...

\n
$ ./gradlew clean :roadsigns:assemble\n$ ./gradlew publishToMavenLocal\n
Run Code Online (Sandbox Code Playgroud)\n

...然后在示例 Androidapp模块中引用已部署的库工件。mavenLocal()首先,我在根build.gradle文件中添加:

\n
allprojects {\n    repositories {\n        google()\n        mavenCentral()\n        jcenter()\n        mavenLocal() // <-- Add this\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

mavenLocal()直接引用依赖项:

\n
dependencies {\n    implementation\n    // implementation project(":roadsigns")\n    implementation "info.metadude.kotlin.library.roadsigns:roadsigns:$version"\n    implementation Libs.kotlinStdlib\n    // ...\n
Run Code Online (Sandbox Code Playgroud)\n

错误

\n

当我构建示例应用程序时,我收到以下构建错误

\n
$ ./gradlew …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library aar maven-publish

18
推荐指数
2
解决办法
4万
查看次数

BootJar + MavenJar。工件不是由这个构建产生的

我有一个具有以下层次结构的示例项目:

Sample (root)
   -- model (simple jar)
   -- api   (springboot jar)
Run Code Online (Sandbox Code Playgroud)

我想将两个生成的 jars:plain jar 和 bootJar 发布到我的 localRepository。

gradlew clean build -xTest publishToMavenLocal    
Run Code Online (Sandbox Code Playgroud)

但是,出现以下错误:

* What went wrong:
Execution failed for task ':api:publishMavenJavaPublicationToMavenLocal'.
> Failed to publish publication 'mavenJava' to repository 'mavenLocal'
   > Artifact api.jar wasn't produced by this build.
Run Code Online (Sandbox Code Playgroud)

根 build.gradle 如下:

plugins {
    id 'java'
    id "org.springframework.boot" version "2.2.5.RELEASE" apply false
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
}
group 'sample'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories { …
Run Code Online (Sandbox Code Playgroud)

gradle maven-publish spring-boot-gradle-plugin

13
推荐指数
4
解决办法
8417
查看次数

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

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

build.gradle 在图书馆:

apply plugin: 'com.android.library'
apply plugin: 'digital.wup.android-maven-publish'

android {
    compileSdkVersion 26
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "runner"
    productFlavors {
        sit {
            dimension "runner"
        }
        dev {
            dimension "runner"
        }
        uat {
            dimension "runner"
        }
        prd {
            dimension "runner"
        }
    }

}

dependencies …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin maven-publish

10
推荐指数
2
解决办法
2201
查看次数

IDEA 无法下载我的库的源代码

我在私人 Maven 仓库中有一个库(我自己的)。我将它与 javadoc 和源一起发送到那里:

\n

回购协议

\n

在我的应用程序中,我声明了这个存储库:

\n
dependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)\n\n    repositories {\n        google()\n        mavenCentral()\n\n        maven {\n            url = uri("https://jitpack.io")\n        }\n        maven { // <- This is my private repo\n            credentials {\n                username = extra["mavenUser"] as String\n                password = extra["mavenPassword"] as String\n            }\n            url = uri(extra["mavenUrl"] as String)\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

它下载 aar 没有任何问题,但不下载源,当我尝试通过单击 \xc2\xabDownloadsources\xc2\xbb 来强制它时,它失败了:

\n
Execution failed for task \':app:DownloadSources\'.\n> Could not resolve all files for configuration \':app:downloadSources_36c7b334-04c2-4099-b66c-2adc137cc95c\'.\n   > Could not find com.example.path:common-core:0.0.1@aar.\n     Searched in the following …
Run Code Online (Sandbox Code Playgroud)

java gradle maven kotlin maven-publish

10
推荐指数
1
解决办法
2216
查看次数

来自s3的gradle maven依赖的未解析引用

我尝试将库发布到私有S3 maven存储库.上传由密码保护,但是为了下载,该库是公开的.aar文件上传没有问题(以及pom/md5/sha1),我可以在我的S3存储桶中看到它,下载它甚至手动添加这个作为依赖项到我的项目.但是当我像这样加载这个依赖:

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "http://myrepo.com" }
}

//in the project's build.gradle
implementation 'com.mylib:mylib:0.1.1'
Run Code Online (Sandbox Code Playgroud)

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

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

任何想法如何使其工作?

这就是maven-publish代码的外观.

android.libraryVariants.all { variant ->

    if (variant.buildType.name == "release" && variant.flavorName == "prod") {

        variant.outputs.all { output ->

            publishing.publications.create(variant.name, MavenPublication) {

                artifact source: output.outputFile, classifier: output.name

                pom.withXml {
                    def dependencies = asNode().appendNode('dependencies')

                    configurations.getByName(variant.name + "CompileClasspath").allDependencies
                            .findAll { it instanceof ExternalDependency }
                            .each {
                        def dependency = dependencies.appendNode('dependency')

                        dependency.appendNode('groupId', it.group)
                        dependency.appendNode('artifactId', it.name)
                        dependency.appendNode('version', …
Run Code Online (Sandbox Code Playgroud)

android gradle maven maven-publish gradle-plugin

9
推荐指数
1
解决办法
314
查看次数

为什么android gradle maven发布工件bundleRelease not found

当我同步项目时,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 maven-publish

9
推荐指数
2
解决办法
7293
查看次数

发布 Android 库并使用另一个模块作为依赖项

我的项目结构包含 3 个模块::library:shared:internal
它们之间的依赖关系如下:

:library--取决于-->:internal通过实现
:library--取决于-->:shared通过api
:internal --取决于-->:shared通过实现

因此,:library使用:internal,而不暴露它并:shared 暴露它。另外,:internal用途:shared也是如此。


问题:如何:library使用 Gradle 插件发布模块maven-publish并包含其他模块源?

目前,我的发布看起来像这样(build.gradle.kts :library

publishing {
    publications {
        register<MavenPublication>("release") {
            groupId = Project.GROUP_ID
            artifactId = Project.ARTIFACT_ID
            version = Project.VERSION
            from(components["release"])
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在发布(我使用 JitPack)并将其添加为另一个项目的build.gradle文件中的依赖项之后,我在尝试构建它时遇到以下错误: …

android gradle maven-publish

9
推荐指数
0
解决办法
736
查看次数

无法在gradle maven-publish插件中传输工件pom

我使用gradle(2.9)maven-publish插件将文件发布到私有nexus maven repo.build.gradle文件是

apply plugin: 'maven-publish'

publishing {
    repositories {
        maven {
            name "example-maven"
            url "https://..."
            credentials {
                username mavenUser
                password mavenPassword
            }
        }
    }
    publications {
        maven(MavenPublication) {

            groupId 'com.example.karaf-utils'
            artifactId 'esa-bootstrapper'
            version '1.0.0'

            artifact source: "${projectDir}/kar/example.esa.bootstrapper.kar", extension: 'kar'

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

kar文件已正确上传,在nexus中我可以看到预期的xml描述符:

<dependency>
  <groupId>com.example.karaf-utils</groupId>
  <artifactId>esa-bootstrapper</artifactId>
  <version>1.0.0</version>
  <type>kar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但不幸的是,在执行publish任务期间,我收到以下错误:

gradle :com.example.karaf.subsys.bootstrap:publish
:com.example.karaf.subsys.bootstrap:generatePomFileForMavenPublication
:com.example.karaf.subsys.bootstrap:publishMavenPublicationToexample-mavenRepository
Upload https://nexus.dev.example.io/nexus/content/repositories/example-maven/com/example/karaf-utils/esa-bootstrapper/1.0.0/esa-bootstrapper-1.0.0.kar
Upload https://nexus.dev.example.io/nexus/content/repositories/example-maven/com/example/karaf-utils/esa-bootstrapper/1.0.0/esa-bootstrapper-1.0.0.kar.sha1
Upload https://nexus.dev.example.io/nexus/content/repositories/example-maven/com/example/karaf-utils/esa-bootstrapper/1.0.0/esa-bootstrapper-1.0.0.kar.md5
Upload https://nexus.dev.example.io/nexus/content/repositories/example-maven/com/example/karaf-utils/esa-bootstrapper/1.0.0/esa-bootstrapper-1.0.0.pom
Could not transfer artifact com.example.karaf-utils:esa-bootstrapper:pom:1.0.0 from/to remote (https://nexus.dev.example.io/nexus/content/repositories/example-maven): Could not write to resource …
Run Code Online (Sandbox Code Playgroud)

gradle maven-publish

8
推荐指数
1
解决办法
6295
查看次数