安装及使用本地Maven仓库
1. 下载 Maven
Maven 下载地址:https://maven.apache.org/download.cgi
2. 安装 Maven
解压 zip 包到本地目录,如:E:\maven\apache-maven-3.9.1
将 E:\maven\apache-maven-3.9.1和 E:\maven\apache-maven-3.9.1\bin 路径设置到环境变量。安装成功后,打开 cmd 命令行窗口,输入 mvn --version,可以出现version输出即是安装成功。
3. 将 jar 包发布到本地仓库
参考博客: Maven 发布jar包到本地库
Maven 安装 JAR 包的命令:
mvn install:install-file -Dfile=jar包的位置 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar
指令执行成功截图:
安装成功后,生成的 pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tencent.shadow.dynamic.loader</groupId>
<artifactId>loader</artifactId>
<version>1.0.0</version>
<description>POM was created from install:install-file</description>
</project>
mvn install:install-file -Dfile=jar包的位置 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar
jar包的位置:就是要发布的jar的路径,例如:E:\codes\Shadow\Shadow-source\projects\sdk\dynamic\dynamic-loader\build\libs\dynamic-loader.jar
groupId:就是maven的groupId信息,如上面的xml的<groupId>标签中的信息
artifactld:就是maven的artifactld信息,如上面的xml的<artifactld>标签中的信息
version:就是maven的version信息,如上面的xml的<version>标签中的信息
4. 使用本地Maven仓库的Jar 包
在 Android Studio 的 settings.gradle 中配置 mavenLocal() 导入本地 maven 仓库,注意在 settings.gradle 中配置才能生效。
在对应模块的 build.gradle 中配置依赖项
// implementation "groudId : artifactId : version"
implementation "com.tencent.shadow.dynamic.loader:loader:1.0.0"
文件所在路径:USER_HOME\.m2\repository\com\tencent\shadow\dynamic\loader\loader\1.0.0\loader-1.0.0.jar
如果 mavenLocal() 没有配置在 settings.gradle 中,不会生效,如下,在 project 的根目录的 build.gradle 配置 mavenLocal(),没有生效。gradle 去 mavenCentral() 的路径找不到依赖jar包。如下图:
如果 mavenLocal() 配置在 app/build.gradle 时,会编译报错,
Build was configured to prefer settings repositories over project repositories but repository 'MavenLocal' was added by build file 'app\build.gradle'
如下图:
编译报错提示说,build 的仓库配置应该写到 setting.gradle 中,而不是项目 build.gradle,但是当前构建文件 build.gradle 添加了 MavenLocal 仓库。所以,我们要把 mavenLocal() 配置到 settings.gradle 中。
添加 mavenLocal() 和 implementation 后,sync project 和 build,完成编译。
参考文档:
Maven Publish Plugin
Maven 教程