资讯专栏INFORMATION COLUMN

gradle多模块打jar,上传本地仓库,并给本地其他项目使用

荆兆峰 / 1256人阅读

摘要:前言本篇主要讲述多模块打包,上传本地仓库,并交由本地其他项目使用环境准备操作系统版本开发软件注版本不同,引入依赖方式可能不同,如果你发现本地导包是的,但是打包就报错,可以看看是不是版本所引起的问题多模块文档多环境讲解,官方文档,官方文档描述

1、前言
本篇主要讲述:gradle多模块打jar包,上传本地仓库,并交由本地其他项目使用
2、环境准备

操作系统: mac os

gradle版本:4.1.0

开发软件:idea

注:gradle版本不同,引入依赖方式可能不同,如果你发现本地导包是OK的,但是打包就报错,可以看看是不是gradle版本所引起的问题
3、多模块gradle文档

【gradle多环境讲解,官方文档】,官方文档描述了多模块配置中的几个闭包的常规使用
allprojects{}, subprojects{}。前者配置应用包括root模块在内的所有模块,后者只应用子模块,详细的使用规则进入官方文档详细了解

4、项目实战

项目1结构

|──root-project-one             项目1名称
    ├── common-project          基础子项目 
    │   └── build.gradle        基础子项目配置文件
    ├── example-project         依赖common项目的示例项目
    │   └── build.gradle        依赖common项目的示例项目的配置文件
    ├── build.gradle            项目1的配置文件

项目2结构

|──root-project-two           项目2名称  
    ├── build.gradle          项目2的配置文件(需要引用项目1中的example-project)

各个项目的配置文件(此处只列举主要配置)

root-project-one/build.gradle

//所有子项目共享配置
subprojects {
    apply plugin: "maven"
    // 获取本地仓库路径
    def localRepositoryPath = "file://" + new File(System.getProperty("user.home"), ".m2/repository").absolutePath
    //打包至本地仓库配置
    uploadArchives {
        repositories {
        //mavenDeployer 需要依赖 apply plugin: "maven"
            mavenDeployer   { 
                repository(url: localRepositoryPath)
                pom.project {
                    name = project.name        // 当前项目名称
                    version = project.version   //当前项目版本  0.0.1
                    groupId = project.group     //  当前项目组  com.xxx
                }
            }
        }
    }
}

common-project/build.gradle

//jar SKIPPED 问题,添加如下配置
jar.enabled=true    //(不设置可能会无法打jar)

example-project/build.gradle

dependencies {
    //依赖 common-project
    compile project(":common-project")
}
//jar SKIPPED 问题,添加如下配置
jar.enabled=true

上述配置完毕后刷新gradle配置,进入每个子模块中打开命令行执行如下命令进行打包

gradle -q uploadArchives

或者打开右侧的gradle面板,到模块下的task>upload>uploadArchives,点击执行即可生成相关jar

本地项目引用jar
root-project-two /build.gradle

repositories {
    //优先查找本地maven库,性能最好
    mavenLocal() //注:引用本地jar包时,必须加上本地maven库
    maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
}
dependencies {
    //依赖本地jar
    compile("com.xxx:example-project:0.0.1")
}
5、总结

gradle版本可以通过修改项目下gradle>wrapper>gradle-wrapper.properties文件的distributionUrl对应地址的版本来修改,修改版本后需要刷新gradle

当多模块相互依赖,打包给本地其他项目使用的时候,相互依赖的模块建议都打jar包上传本地仓库

Diboot - 简单高效的轻代码开发框架

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74527.html

相关文章

  • 慕课网_《新一代构建工具gradle》学习总结

    摘要:时间年月日星期二说明本文部分内容均来自慕课网。项目一个项目代表一个正在构建的组件比如一个文件,当构建启动后,会基于实例化一个类,并且能够通过变量使其隐式可用。任务动作定义了一个最小的工作单元。 时间:2017年05月16日星期二说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccod...

    antyiwei 评论0 收藏0
  • 海航生态科技舆情大数据平台容器化改造

    摘要:本文转载自微信公众号账号,作者为海航生态科技技术研究院大数据开发工程师高颜。文章介绍了海航生态科技舆情大数据平台的容器化改造经验,包括初期技术架构应用容器化架构迁移持续发布与部署。 本文转载自微信公众号Docker(账号:dockerone),作者为海航生态科技技术研究院大数据开发工程师高颜。 文章介绍了海航生态科技舆情大数据平台的容器化改造经验,包括初期技术架构、应用容器化、架构迁...

    idealcn 评论0 收藏0

发表评论

0条评论

荆兆峰

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<