maven库介绍
maven私服优势
maven私服搭建
启动nexus
使用命令行cd到nexus文件夹的bin目录下
使用nexus /run 命令启动,直到出现下图才算启动完成
登录nexus
初次启动之后,你可以在浏览器上访问nexus这个maven管理器。地址:http://localhost:8081/
当然,你可以使用默认的用户登录。用户名:admin 密码:admin123
不过我在尝试使用默认密码时,显示密码错误,提示密码被保存在sonatype-work\nexus3下,有个password的文件,用记事本打开就可以看到密码:
点击Browse可以看到默认的仓库:
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。
创建仓库
点击工具栏的第二个
然后可以看到第一栏就是仓库Repositories,可以点击create Repository来创建仓库
点击create Repository完后会显示你要创建的仓库类型
这里我选择maven2(hosted)类型进行创建,输入name,选择version policy ,选择是快照版本还是发布版本
创建完毕后再回到respositories就可以看到刚刚创建的maven仓库。
maven私服接入
在Build.gradle的buildscript 下接入maven私服,在allprojects也要设置。
maven {
allowInsecureProtocol = true
url 'http://localhost:8081/repository/..../'
credentials {
username 'admin'
password
}
}
maven {
allowInsecureProtocol = true
url 'http://localhost:8081/repository/..../'
credentials {
username 'admin'
password
}
}
1、buildscript是gradle脚本执行需要的依赖,分别是对应的maven库和插件
2、allprojects里是项目本身需要的依赖, 比如我们平时用到的第三库用到了自己的maven库,就需要在这引入。
配置gradle.properties
什么是gradle.properties?
在Android中,
1.在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,它是由IDE自动生成的gradle.properties文件。
2.他是项目级别的Gradle配置文件,gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用.我们可以在里面做一些Gradle文件的全局性的配置,也可以将比较私密的信息放在里面,防止泄露。
例如:
NEXUS_REPOSITORY_URL=http://localhost:8081/repository/.../
POM_GROUPID=com...android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=22af8390-e83e-4963-b09a-7ece4b381312
在我们创建好的各个模块中的build.gradle引入maven插件:
配置uploadArchives:
Archives:档案
deployer:部署
工程结构优化
创建一个gradle来扩展属性
ext {
android = [compileSdkVersion: 29,
buildToolsVersion: "29.0.0",
minSdkVersion : 19,
targetSdkVersion : 29,
applicationId : 'com.imooc.imooc_voice',
versionCode : 2,
versionName : '1.1',
multiDexEnabled : true,]
depsVersion = [appcompact : '29.0.0',
design : '29.0.0',
recyclerview : '29.0.0',
constraint : '1.1.3',
eventbus : '3.1.1',
greendao : '3.2.2',
rxjava : '2.2.9',
rxandroid : '2.1.1',
arouterapi : '1.5.0',
aroutercompiler: '1.2.2',
magicindicator : '1.5.0',
glide : '4.9.0',
glidecompiler : '4.9.0',
okhttp : '3.3.0',
gson : '2.8.0',
]
depsLibs = [appcompact : 'androidx.appcompat:appcompat:1.0.0',
design : 'com.google.android.material:material:1.0.0',
recyclerview : 'androidx.recyclerview:recyclerview:1.0.0',
constraint : 'androidx.constraintlayout:constraintlayout:1.1.3',
eventbus : "org.greenrobot:eventbus:${depsVersion.eventbus}",
greendao : "org.greenrobot:greendao:${depsVersion.greendao}",
rxjava : "io.reactivex.rxjava2:rxjava:${depsVersion.rxjava}",
rxandroid : "io.reactivex.rxjava2:rxandroid:${depsVersion.rxandroid}",
arouterapi : "com.alibaba:arouter-api:${depsVersion.arouterapi}",
aroutercompiler: "com.alibaba:arouter-compiler:${depsVersion.aroutercompiler}",
magicindicator : "com.github.hackware1993:MagicIndicator:${depsVersion.magicindicator}",
glide : "com.github.bumptech.glide:glide:${depsVersion.glide}",
glidecompiler : "com.github.bumptech.glide:compiler:${depsVersion.glidecompiler}",
okhttp : "com.squareup.okhttp3:okhttp:${depsVersion.okhttp}",
gson : "com.google.code.gson:gson:${depsVersion.gson}",
]
}
在根工程的Build.gradle文件中引入:
//引入根工程下的统一版本管理文件
apply from: this.rootProject.file('....gradle')
在子工程中使用:
compileSdkVersion rootProject.android.compileSdkVersion
//eventbus类库依赖
implementation rootProject.depsLibs.eventbus