搭建私服的好处:
1、节省带宽资源
2、统一管理第三方包,可以对第三方包的引入做审查,避免项目n多的乱七八糟第三方依赖
3、组件化后,需要将打包的依赖存储在私服,方便维护
官方下载地址:https://www.sonatype.com/download-oss-sonatype
不同版本的下载地址:https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3
我的私服成果:
配置文件包含:
gradle.properties:
//上传构建的信息 GROUP=com.example VERSION_NAME=1.0.0 POM_ARTIFACT_ID=libtest //上传的目标仓库地址 SNAPSHOT_REPOSITORY_URL=http://192.168.199.254:8081/repository/maven-snapshots/ RELEASE_REPOSITORY_URL=http://192.168.199.254:8081/repository/maven-releases/ //nexus的私服的用户名和密码 NEXUS_USERNAME=admin NEXUS_PASSWORD=gabriel
upload.gradle:
apply plugin: 'maven' def isReleaseBuild() { return VERSION_NAME.toUpperCase().contains("SNAPSHOT") == false } def getRepositoryUsername() { return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" } def getRepositoryPassword() { return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" } def getRepositoryUrl() { return isReleaseBuild() ? RELEASE_REPOSITORY_URL : SNAPSHOT_REPOSITORY_URL } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { pom.groupId = GROUP pom.artifactId = POM_ARTIFACT_ID pom.version = VERSION_NAME repository(url: getRepositoryUrl()) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } } } } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } //解决 JavaDoc 中文注释生成失败的问题 tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') options.addStringOption('charSet', 'UTF-8') } artifacts { archives androidSourcesJar archives androidJavadocsJar } }
builde.gradle 只需要引用一下就可以
apply from: 'upload.gradle'
最后找到gralde的task,双击运行,便可以将依赖打包上传到nexus了。