当前位置: 首页 > 知识库问答 >
问题:

如何在我的 maven 本地存储库中发布具有 gradle 的现有 aar?

南宫才英
2023-03-14

我有一个具有以下结构的项目:

> < li>

projectRoot

build.gradle

模块 1/

>

  • build.gradle

    人工制品1.aar

    模块2/ ....

    我的 artifact1.aar 是一个编译好的工件,我无法访问源代码。

    我的模块1 gradle构建文件如下:

    configurations.maybeCreate("default")
    artifacts.add("default", file('artifact1.aar'))
    

    这样,代码就包含在。在模块2中,只需引用一个gradle项目依赖项,就可以使用aar。

    但是我想在我的maven本地发布.aar,以便其他Android项目可以访问它。

    我检查了maven publish插件和android maven Publich插件,但这两个插件似乎是在java library插件或com.android之后调用的。库插件。

    所以我的问题是如何在我的maven本地存储库中发布一个带有gradle的现有aar?

    我在4.8版中使用gradle。

  • 共有2个答案

    鄢英哲
    2023-03-14

    如果你已经安装了maven,你可以使用< code > maven-install-plugin 的< code>install-file目标。

    司徒兴思
    2023-03-14

    我在本例中使用了rxbinding aar。

    > < li>

    正如您正确提到的,“publisher”项目中必须有一个子项目,它必须包含aar和一个包含以下内容的构建文件:

    // rxbinding/build.gradle
    apply plugin: "maven-publish"
    
    configurations.maybeCreate("default")
    def publishArtifact = artifacts.add("default", file('rxbinding-2.1.1.aar'))
    
    publishing {
        publications {
                aar(MavenPublication) {
                groupId = 'my.sample.artifact'
                artifactId = 'somerandomname'
                version = '1.0.0'
                artifact publishArtifact
            }
        }
    }
    

    您可以将< code>maven-publish插件应用于任何项目,但是您必须手动定义工件,就像我们刚刚在这里所做的那样。一些插件(如< code>java-library插件)与< code>maven-publish插件集成,以自动发布项目的默认工件。

    现在运行 ./gradlew rxbinding:publishToMavenLocal - 这应该将工件放入本地存储库中

    提及任何以这种方式发布的aar非常重要,它不会带来它的依赖关系,因此您必须知道实际使用已发布的aar需要哪些库。

    我还创建了一个示例项目,您可以在其中尝试此操作。

     类似资料:
    • 问题内容: 我正在开发两个相关的项目。其中一个是“助手”,另一个是“主”。我不断地更新“主要”,但是我有时也会更新“助手”。之后,我在gradle的maven插件中运行目标,并在本地maven存储库中获取jar。之后,我在“主要”项目中进行了gradle更新,并链接了更新的jar。 有两个问题。 1)如果仍然使用maven插件,那么如何将源代码也发布到本地Maven存储库中呢? 2)我可以在没有m

    • 我正在开发两个相关项目。其中一个是“帮手”一个,另一个是“主”一个。我在不断地更新“主”,但时不时也在更新“帮手”一个。然后,我在Gradle的maven插件中运行goal,并在本地maven repo中获取JAR。之后,我在“main”项目中进行分级更新,并将更新的jar链接起来。 有两个问题。 1)如果继续使用maven插件,那么如何将源代码发布到本地maven repo中? 2)如果没有ma

    • 在我的java类中,我收到了以下编译时错误。 我在pom.xml文件中也提到了依赖性。 请帮助我为什么即使在pom时也找不到依赖项。xml具有依赖关系。

    • 我所处的环境是,可以将同名jar文件的多个版本发布到本地Nexus安装。这些jar文件始终命名为XYZ-SNAPSHOT。罐子我们的持续集成系统需要始终获取最新版本,因此我们的自动构建当前包含以下内容,以消除持续集成机器上的完整本地回购: mvn依赖项:清除本地存储库 这将强制在每个构建上下载所有依赖项,这将花费很长时间。是否有某种方法可以将“includes”标志与通配符一起使用。我可以这样假设

    • 如果我在一个gradle构建中指定了多个maven存储库,我希望如果gradle在其中一个存储库中找不到依赖项,它应该尝试其他存储库。相反,它在第一个存储库(内部公司nexus repo)上失败,因为那里不存在依赖项,并且构建失败 失败:构建失败,出现异常。 *问题:无法解析配置“:metadata security:compile”的所有依赖项。

    • 问题内容: 我想创建本地Maven存储库。我做了以下步骤: 在中安装了Maven插件 在apache服务器中创建了一个文件夹localrepository,可使用访问 在我的项目中,我提供了 但这并没有解决上的jar 是否需要提供存储库? 问题答案: 使用具有默认配置的Web服务器来设置简单的存储库。关键是目录结构。该文档没有明确提及它,但其结构与本地存储库相同。 要建立一个内部存储库,只需要您有