本篇主要讲述:gradle多模块打jar包,上传本地仓库,并交由本地其他项目使用
注:gradle版本不同,引入依赖方式可能不同,如果你发现本地导包是OK的,但是打包就报错,可以看看是不是gradle版本所引起的问题
【gradle多环境讲解,官方文档】,官方文档描述了多模块配置中的几个闭包的常规使用
allprojects{}, subprojects{}。前者配置应用包括root模块在内的所有模块,后者只应用子模块,详细的使用规则进入官方文档详细了解
项目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')
}
- gradle版本可以通过修改项目下gradle>wrapper>gradle-wrapper.properties文件的distributionUrl对应地址的版本来修改,修改版本后需要刷新gradle
- 当多模块相互依赖,打包给本地其他项目使用的时候,相互依赖的模块建议都打jar包上传本地仓库
我们正处于互联网高速发展的时代,互联网上每天都会产生大量信息,然而这信息和数据其实都是非常有价值的,而传统的处理数据信息的方式已经逐渐不能满足我们了,进而“大数据”技术这个概念随之出现。大数据是眼下非常时髦的热词,同时也催生出了一些与大数据处理相关的职业,通过对数据的挖掘分析来影响企业的商业决策。随着大数据在国内的发展,大数据相关人才却出现了供不应求的状况,大数据分析师更是被媒体称为“未来最具发展...
回溯法有“通用解题法”之称。用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。若
Palindrome subsequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65535 K (Java/Others) Total Submission(s): 2836 Accepted Submission(s): 1160Problem Description I...
剑指Offer39--数字在排序数组中出现的次数暴力搜索输出不是这个数的个数,再相减统计一个数字在排序数组中出现的次数。暴力搜索public class Solution { public int GetNumberOfK(int [] array , int k) { int count=0; for(int i=0; i<array.length; i++){ if(array[i] == k){ co_剑指offer39 c语言 排序
导语Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联积累起来。音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。要学习好NDK,其_android热更新和热修复使用
匿名用户1级2011-10-25 回答简单来说:宏定义又称为宏代换、宏替换,简称“宏”。是C提供的三种预处理功能的其中一种。复杂的请看下面,讲的很全。下面的带参宏定义,多行宏定义,在Linux内核源码中很多。另外sizeof也是一个宏定义。宏定义宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译1. 不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏”。格式..._宏定义作用域为其后的代码在定义之前的代码不会被替换对吗
1、 什么是互联网信息服务? top↑ 用户可以通过独立的域名(www.miibeian.gov.cn)或独立的IP浏览公司在互联网上发布的信息。2、 什么是经营性的互联网信息服务? top↑ 经营性互联网信息服务:是指通过互联网向上网用户有偿提供信息或网页制作等服务的活动。见<互联网信息服务管理办法>国务院292号令。3、 从事经营性互...
昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了。。。洛谷P3183 [HAOI2016]食物链 :题目描述如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数。物种的名称为从1到n编号M条能量流动关系形如a..._p5635 ,题解
为什么80%的码农都做不了架构师?>>> ..._wordpress跨域
RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有_r树的c语言实现
(1) 在 ” 开始 ”->” 运行 ” 中输入 cmd 打开 Windows 命令行。在命令行中输入 ipconfig /all ,会出现若干网络配置信息,找到 Tunnel adpter (隧道适配器) Teredo Tunneling Pseudo-Interface , 查看它是否有正确的 IPv6 地址 ( 以 2001:0 为前缀的 ipv6 地址 ),若有说明正确;(2) 在 ”_teredo位probe模式
TCP和UDP的区别1.TCP的特点TCP是面向连接的可靠性传输协议。面向连接:需要进行三次握手进行连接,四次挥手断开连接可靠性:TCP通过快速重传机制,同时有自身的流量控制和拥塞控制设计,因此数据的传输可靠性较高。TCP是面向字节流的传输协议。TCP是面向面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。TCP传输效率低,传输速度慢 _tcp udp双工性