如何将 aar 库上传到 Nexus?

How do I upload an aar library to Nexus?

我有一个 Android aar 库,用于 Android 应用程序。它与直接包含在 Android 项目中的 aar 库一起正常工作。我想将该库移至我的内部 Nexus maven 存储库,以便其他开发人员也可以使用该库。

如何将 aar 上传到 Nexus(Maven 存储库)?在 Web 界面中没有明显的选项可以这样做:

使用 maven 部署插件。示例命令:

mvn deploy

这假设您已经正确配置了 pom.xml 和 distributonManagement 部分,告诉它需要知道的关于您的 Nexus 存储库的所有信息

如果您是那种不喜欢更改 pom.xml 的人,或者更糟的是如果您的代码甚至没有 pom.xml 但您仍然想上传到 Nexus,那么您仍然可以使用

mvn deploy:deploy-file -Durl=http://mycompany/nexus/repo/blah -Dfile=/path/to/my/foo.aar -Dpackaging=aar -DgroupId=com.mycompany -DartifactId=foo -Dversion=1.2.3

有关更多信息,请参阅 maven 部署插件文档:https://maven.apache.org/plugins/maven-deploy-plugin/

您可以使用 Maven 或 Gradle 或手动上传。

对于手动上传,您只需在输入中输入包值 'aar' 并根据需要上传。

如果您使用 Gradle 构建项目,这里有一个很好的教程可以将您的工件推送到 Nexus:

https://medium.com/@scottyab/how-to-publish-your-open-source-library-to-maven-central-5178d9579c5#.acynm6j49

基本上,它添加了一个新的 Gradle 任务 (uploadArchives) 来推送您的工件。所以做这样的事情:

>gradle clean build uploadArchives

我使用 gradle's maven plugin 通过修改 Android build.gradle 文件上传到 Nexus。

apply plugin: 'maven'

dependencies {
    deployerJars "org.apache.maven.wagon:wagon-http:2.2"
}

uploadArchives {
    repositories.mavenDeployer {
        configuration = configurations.deployerJars
        repository(url: "https://my.example.com/content/repositories/com.example/") {
            authentication(userName: "exampleUser", password: "examplePassword")
            pom.groupId = "com.example"
            pom.artifactId = "myexample"
            pom.version = '1.0.0'
        }
    }
}

要上传:gradlew upload,使用 Android Studio 项目提供的 gradlew 脚本。

You can also move the authentication parameters into a file that is not version controlled.

对于 Android,我们通常有两个 build.gradle 文件,一个在顶级文件夹中,另一个在特定模块中:

app/
---build.gradle
---module/
------build.gradle

在本库客户端的 app/build.gradle 文件中,您必须添加:

repositories {
    jcenter()
    maven {
            url "http://localhost:8081/repository/test-maven-repo/"
        }
}

你的图书馆 app/module/build.gradle 文件:

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/repository/test-maven-repo/") {
                authentication(userName: "admin", password: "admin123")
                pom.groupId = "com.example.test"
                pom.artifactId = "myexample.test"
                pom.version = '1.0.0'
            }
        }
    }
}

您可能希望 运行 它只是:

./gradlew upload

Link转官方文档: Maven Publish Plugin.

为什么 nexus 包对@aar 文件没有任何意义,但如果你尝试将它作为 jar 文件上传,那么它不会阻止你,一切都按原样工作..