gradle配置flavors上传nexus服务器
分拆代码的过程中需要把核心代码编译成一个库上传到内部maven服务器上,所以研究了一下上传私库的方法。
首先拆分的是工具类库,这个库和java的库类似,没有配置flavors,所以按照网上通用的方法引入maven插件就可以了。
pply plugin: 'com.android.library' android { }
dependencles{ }
apply plugin: 'maven' version = '1.0.2-SNAPSHOT' uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://11.2.3.71:8081/repository/core-release/") {
authentication(userName: "admin", password: "admin123")
pom.groupId = "com.example.baselib"
pom.artifactId = "myLib"
}
snapshotRepository(url: "http://11.2.3.71:8081/repository/core-dev/") {
authentication(userName: "admin", password: "admin123")
pom.groupId = "com.example.baselib"
pom.artifactId = "myLib"
}
}
}
}
然后执行./gradlew upload,或者在android studio中点开gradle窗口,一般在右边框的上面。找到对应模块,执行upload就行了。
然后这种方法对于有flavors的库没有效果,我觉得是我配置的不对,然后我又找到了另一种方法解决有flavors的android库,这回不用maven插件了,用maven-publish插件,具体方法是这样的:
apply plugin: 'maven-publish' publishing {
publications {
android.libraryVariants.all { variant ->
variant.outputs.each { output ->
create("${variant.name.capitalize()}", MavenPublication) {
groupId "app.android"
artifactId "core-${output.baseName}"
version '1.0.0' artifact(output.outputFile)
}
}
}
}
repositories {
maven {
name 'artifactory'
url "http://11.2.3.71:8081/repository/ruixin-release/"
credentials {
username = "admin"
password = "admin123"
}
}
}
}
它会把所有的组合全部上传上去,但是它有一个缺陷,直接在gradle框中点击publish是没有效果的,它需要我们首先执行build,然后再点击发布的按纽publish。
天这里任务完成了一大半,还有一个小问题,你发布的这个库可能信赖了很多maven上的其它库,所以自己的库发布的时候要告诉用的人它所有信赖的库,于是需要一个收集信赖并写入pom文件的方法:
pom.withXml {
def node = asNode() // ugly hack to set the packaging property in the POM as 'aar'
((NodeList) node.get('packaging')).get(0).value = 'aar' def dependenciesNode = node.appendNode('dependencies') def cl = { Dependency dep ->
// if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
if (dep.name == null || dep.name == "unspecified")
return // ignore invalid dependencies def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dep.group)
dependencyNode.appendNode('artifactId', dep.name)
dependencyNode.appendNode('version', dep.version) if (!dep.transitive) {
// If this dependency is transitive, we should force exclude all its dependencies them from the POM
def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
exclusionNode.appendNode('groupId', '*')
exclusionNode.appendNode('artifactId', '*')
} else if (!dep.properties.excludeRules.empty) {
// Otherwise add specified exclude rules
def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
dep.properties.excludeRules.each { ExcludeRule rule ->
exclusionNode.appendNode('groupId', rule.group ?: '*')
exclusionNode.appendNode('artifactId', rule.module ?: '*')
}
}
} // List all dependencies and write to POM
configurations.api.getAllDependencies().each cl
configurations.implementation.getAllDependencies().each cl
}
这段代码要放到任务的创建代码中,也就是
artifact(output.outputFile) 下面另起一行,反正是一个大括号中就行。
还有一个要注意的地方,引用库的代码不会自动使用你更新的库,除非你的版本号变了,并且你修改了gradle文件使用新版本号的库。在不改变版本的前提下,使用新发布的库需要先把先前的缓存清理掉
./gradlew build --refresh-dependencies
gradle配置flavors上传nexus服务器的更多相关文章
- Maven配置jar(war)包自动打包上传Maven服务器的配置
Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionMa ...
- maven自动打包上传nexus仓库配置
一个基础类,可能要升级并放到私服库里,为了方便,应该能够自动打包放到nexus.这就需要配置maven一些参数与pom.xml. 依次在settings.xml文件裡輸入 <!-- nexus帳 ...
- Web Server 配置及上传文件
第一种方案:从github上面克隆到服务器 1.git上传文件 ( git bash ) ①切换至所要上传的文件夹 cd 文件夹homepage ②告诉系统当前文件夹要进行git管理 git init ...
- 前端借助dom-to-image把HTML转成图片并通过ajax上传到服务器
之前接到了一个任务,把jsp中的table转成一个图片,保存在指定文件夹并显示在前端. 我的思路是:一.引用第三方js在前端把table转成图片 二.通过ajax把图片上传到服务器,保存在指定文件夹 ...
- SpringMVC中文件的上传(上传到服务器)和下载问题(一)
一.今天我们所说的是基于SpringMVC的关于文件的上传和下载的问题的解决.(这里所说的上传和下载都是上传到服务器与从服务器上下载文件).这里的文件包括我们常用的各种文件.如:文本文件(.txt), ...
- maven jar包上传到服务器
maven jar包上传到服务器时出现pom文件没有上传上去,致使该jar包再被使用的时候没有依赖,jar包调用出错 解决办法,将pom文件一起deploy上去 mvn deploy:deploy-f ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集
SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集 chocoball 发布于 2年前,共有 3 条评论 SecureCRT 是一款支持 SSH2.SSH1.Telnet.Telne ...
- 安装配置BITS上传服务
IIS 6.0和IIS 7.0 支持安装BITS上传组件. 下面以IIS7.0为例安装配置bits上传服务. 1.安装 首先确定服务器已经按装IIS服务.依次打开服务管理器->功能->添加 ...
随机推荐
- 【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法
spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{&q ...
- C++11简要介绍
概述 C++1x (本教程中指 C++11/14, 甚至 C++17) 为传统 C++ 注入的大量特性使得整个 C++ 变得更加像一门现代化的语言.C++1x 不仅仅增强了 C++ 语言自身的可用性 ...
- RAISERROR语句
生成错误消息.RAISERROR 可以引用 sys.messages 目录视图中存储的用户定义消息,也可以动态建立消息.该消息作为服务器错误消息返回到调用应用程序,或返回到 TRY…CATCH 构造的 ...
- Javascript高级程序设计 -- 第三章 -- 总结
1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...
- iOS: 格式化新浪微博/QQ说说等等的发布时间
介绍:对于一些社交工具,我们可以发布一些说说或者心情什么的,如新浪微博,QQ,微信等,发布成功后,上面都会有一个发布的时间. 这个时间并不是具体的NSDate类型,而是经过格式化过的符合一般标准的模式 ...
- kvm : Permission denied
创建虚拟机类型为:“virt type :kvm” 时,会报如下错误: Could not access KVM kernel module: Permission denied failed to ...
- javascript快速入门24--XML基础
XML简介 XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言).XML 被设计用来传输和存储数据.XML ...
- 2017.11.15 hashmap的工作原理
参考来自:http://blog.csdn.net/jeffleo/article/details/54946424 一 hashMap的基本概念 1.HashMap的定义 public class ...
- Linux下SVN服务器搭建(CentOS+Subversion)--转
svn(subversion)是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件.svn 服务器有2种运行方式:独立服务器和借助apache等web服 ...
- java 问题汇总(总结,重点)若忘了可以看看{不定时更新}
在用到spring框架中时,场景如下 post 请求过去,对象接收不到参数的值(解决办法:考虑到在参数上加个@RequestBody 注解即可,有些没加的是框架帮忙处理了后默认接收的是json串) h ...