0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Maven进行组件化发布(下)

jf_78858299 来源:小余的自习室 作者:小余的自习室 2023-03-30 11:37 次阅读

如何封装一个通用发布版本

步骤1:在项目根目录下创建:

maven_publish.gradle
apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            // 是否快照版本
            def isSnapShot = Boolean.valueOf(MAVEN_IS_SNAPSHOT)
            def versionName = MAVEN_VERSION
            if (isSnapShot) {
                versionName += "-SNAPSHOT"
            }
            // 组件信息
            pom.groupId = MAVEN_GROUP_ID
            pom.artifactId = MAVEN_ARTIFACTID
            pom.version = versionName

            // 快照仓库路径
            snapshotRepository(url: uri(MAVEN_SNAPSHOT_URL)) {
                authentication(userName: MAVEN_USERNAME, password: MAVEN_USERNAME)
            }
            // 发布仓库路径
            repository(url: uri(MAVEN_RELEASE_URL)) {
                authentication(userName: MAVEN_USERNAME, password: MAVEN_USERNAME)
            }

            println("###################################"
                    + "\\nuploadArchives = " + pom.groupId + ":" + pom.artifactId + ":" + pom.version + "." + pom.packaging
                    + "\\nrepository =" + (isSnapshot ? MAVEN_SNAPSHOT_URL : MAVEN_RELEASE_URL)
                    + "\\n###################################"
            )
        }
    }
}

这段脚本会读取 MAVEN_IS_SNAPSHOT 配置参数,如果为 true,会在版本号后追加 -SNAPSHOT 后缀,表示快照版本。随后声明了两个仓库:repository(…) 声明的是 Release 仓库地址,而 snapshotRepository(…) 声明的是快照仓库地址。Maven 会自动将版本号带 -SNAPSHOT 后缀的组件发布到 snapshotRepository(…) 仓库中,这样就 自动将正式版本和快照版本分发的不同仓库中。

步骤2:声明项目级gradle.properties配置参数:

MAVEN_SNAPSHOT_URL = /Users/yuhb/workspace/public/DemoHall/snapshotRepository
MAVEN_RELEASE_URL = /Users/yuhb/workspace/public/DemoHall/releaseRepository
MAVEN_USERNAME = 
MAVEN_PASSWORD = 
MAVEN_IS_SNAPSHOT = true
MAVEN_GROUP_ID = com.yuhb.demo

| 参数描述 |

MAVEN_SNAPSHOT_URL 快照仓库地址
MAVEN_RELEASE_UR 发布仓库地址
MAVEN_USERNAME 仓库账号
MAVEN_PASSWORD 仓库密码
MAVEN_IS_SNAPSHOT 是否快照版本
MAVEN_GROUP_ID 组织 / 公司的名称
MAVEN_ARTIFACTID 组件的名称(在发布模块配置)
MAVEN_VERSION 组件的版本(在发布模块配置)

步骤 3:在发布模块应用脚本

apply from: '../maven.gradle'
...

步骤 4:在发布模块配置参数 (模块级配置参数会覆盖项目级配置参数)

模块级 gradle.properties

MAVEN_ARTIFACTID = maven
MAVEN_VERSION = v1.0.0
MAVEN_IS_SNAPSHOT = true
...

然后在Gradle面板中找到对应模块下的任务uploadArchives,执行成功后就可以将组建发布对应的maven私服上了

本地aar文件引入的一些技巧:

模块级build.gradle

dependencies {
    ...
    api(name: 'lib-debug', ext: 'aar')
}

repositories {
    flatDir {
        dirs "libs"
    }
}

这种方式如果其他模块需要使用就不方便:

方法1

在项目级build.gradle

allprojects {
    repositories {
        google()
        mavenCentral()
        flatDir { dirs project(':aarlib').file('libs') } // 文件夹要放在某个 module 内
    }
}

这种方式可以在本工程中使用,如果跨工程或者跨设备就不好使了

方法2:二次打包aar发布到maven仓库

apply plugin: 'maven-publish'

def libPath = project.getProjectDir().getAbsolutePath()

publishing {
    publications {
        lib1(MavenPublication) {
            groupId MAVEN_GROUP_ID
            artifactId "lib"
            version "v1.0.0"
            artifact(libPath + "/libs/lib.aar")
        }

        lib2(MavenPublication) {
            groupId MAVEN_GROUP_ID
            artifactId "lib2"
            version "v1.0.0"
            artifact(libPath + "/libs/lib2.aar")
        }
    }
    repositories {
        maven {
            // 发布仓库路径
            url MAVEN_RELEASE_URL

            // 本地仓库地址不适用账号密码
            // > Failed to publish publication 'maven' to repository 'maven'
            // > Authentication scheme 'all'(Authentication) is not supported by protocol 'file'
            // credentials(PasswordCredentials) {
            //     username = MAVEN_USERNAME
            //     password = MAVEN_PASSWORD
            // }
        }
    }
}

好了,本文就讲解到这里了,基本涵盖了关于Maven仓库如何使用的大部分知识盲点,内容较多,大家可以收藏起来慢慢消化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发
    +关注

    关注

    0

    文章

    362

    浏览量

    40779
  • maven
    +关注

    关注

    0

    文章

    30

    浏览量

    3693
  • gradle
    +关注

    关注

    0

    文章

    26

    浏览量

    692
收藏 人收藏

    评论

    相关推荐

    Maven 配置指南

    Maven 配置指南http://bbs.edu118.com/forum.php?mod=viewthread&tid=263&fromuid=231(出处: 信盈达IT技术社
    发表于 08-28 15:08

    使用IDEA创建Maven工程的开发步骤

    Hibernate学习笔记:IDEAMaven工程使用Hibernate示例
    发表于 05-07 10:56

    无法在发布模式进行编译

    无法在发布模式进行编译以上来自于谷歌翻译以下为原文 Compiling in release mode not possible
    发表于 05-13 08:15

    Linux部署maven(war包)web 项目

    一、说明Linux配置Java环境及安装Tomcat,请参考博文点击打开链接Linux部署maven步骤分为以下几点:1.Eclipse导出war包2.拷贝war包到Linux3.Linux解压
    发表于 07-04 06:40

    LinuxMaven安装方法

    关键步骤如下: 1. 下载Maven包. 2. 解压Maven包. 3.配置Maven系统参数,验证Maven是否正确安装.
    发表于 07-23 08:01

    HarmonyOS组件更新,新增700+开源组件

    。开发的脚步永不停歇,在广大组件贡献者的共同努力,又迎来了第三批组件开源。 一、新增开源组件概览本次新增开源组件,涉及工具、网络、文件数据
    发表于 11-18 11:17

    YoC组件发布开源操作指南须知

    package节点可以看到添加的组件。2.1.3 创建开发仓库开发者获取解决方案或组件代码后,可以根据自身的需求在代码托管平台上创建组件开发仓库,
    发表于 03-09 07:37

    Maven工具生成Mybatis的代码及映射的文件

    本文介绍一Maven工具如何生成Mybatis的代码及映射的文件。
    发表于 11-29 11:37 1999次阅读
    <b class='flag-5'>Maven</b>工具生成Mybatis的代码及映射的文件

    Maven管理的jar没有发布到WEB-INFlib应该如何解决详细方案说明

    本文档的主要内容详细介绍的是Maven管理的jar没有发布到WEB-INFlib应该如何解决详细方案说明。
    发表于 05-30 17:07 9次下载
    <b class='flag-5'>Maven</b>管理的jar没有<b class='flag-5'>发布</b>到WEB-INFlib<b class='flag-5'>下</b>应该如何解决详细方案说明

    Linux环境安装Maven的步骤

    安装maven的第一步呢,我们首先得有maven这个东西,我们去它的官网下载永远是最新最权威的,作为开发人员,我们必须要有这种意识,也要养成下载东西去其官网下载的好习惯。
    的头像 发表于 02-08 17:44 2454次阅读
    Linux环境<b class='flag-5'>下</b>安装<b class='flag-5'>Maven</b>的步骤

    如何使用Maven进行组件发布(上)

    这个时候组件发布共享就显的尤为重要。 这篇文章我们就来讲解下如何使用`Maven进行组件
    的头像 发表于 03-30 11:36 1218次阅读
    如何使用<b class='flag-5'>Maven</b><b class='flag-5'>进行</b><b class='flag-5'>组件</b><b class='flag-5'>化</b><b class='flag-5'>发布</b>(上)

    如何使用Maven进行组件发布(中)

    这个时候组件发布共享就显的尤为重要。 这篇文章我们就来讲解下如何使用`Maven进行组件
    的头像 发表于 03-30 11:36 835次阅读
    如何使用<b class='flag-5'>Maven</b><b class='flag-5'>进行</b><b class='flag-5'>组件</b><b class='flag-5'>化</b><b class='flag-5'>发布</b>(中)

    如何理解Maven拉包原理,搞定Maven构建项目

    依赖是我们在使用 Maven 构建项目时最常使用的功能,通过依赖标签,我们可以直接从Maven仓库中引入对应的Jar包,无需手动再将Jar添加到目录下了,可谓是十分方便,不过我们除了使用,还需要考虑多模块依赖之间的关系。
    发表于 05-25 09:50 543次阅读
    如何理解<b class='flag-5'>Maven</b>拉包原理,搞定<b class='flag-5'>Maven</b>构建项目

    idea如何添加maven

    Maven是一个开源的项目管理工具,它提供了一种简单的方式来管理项目的依赖关系、构建过程和发布部署。本文将详细介绍如何将Maven添加到你的项目中,并使用它来管理你的项目。 第一步:安装Mav
    的头像 发表于 12-06 14:56 1107次阅读

    使用Nexus在本地搭建npm、yum和maven私有仓库

    使用Nexus在本地搭建npm、yum和maven私有仓库 为保证在无互联网的情况,可正常搭建、构建项目,并自动部署项目,本系统采用Nexus+Jenkins+Maven+Gitl
    的头像 发表于 08-21 14:46 224次阅读
    使用Nexus在本地搭建npm、yum和<b class='flag-5'>maven</b>私有仓库