安装及使用本地Maven仓库

1. 下载 Maven 

Maven 下载地址:https://maven.apache.org/download.cgi

安装及使用本地Maven仓库_第1张图片

2. 安装 Maven 

解压 zip 包到本地目录,如:E:\maven\apache-maven-3.9.1

安装及使用本地Maven仓库_第2张图片

将  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 文件:



  4.0.0
  com.tencent.shadow.dynamic.loader
  loader
  1.0.0
  POM was created from install:install-file

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的标签中的信息
artifactld:就是maven的artifactld信息,如上面的xml的标签中的信息
version:就是maven的version信息,如上面的xml的标签中的信息

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包。如下图:

安装及使用本地Maven仓库_第3张图片

如果 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'

如下图:

安装及使用本地Maven仓库_第4张图片

编译报错提示说,build 的仓库配置应该写到 setting.gradle 中,而不是项目 build.gradle,但是当前构建文件 build.gradle 添加了 MavenLocal 仓库。所以,我们要把 mavenLocal() 配置到 settings.gradle 中。

安装及使用本地Maven仓库_第5张图片

添加 mavenLocal() 和 implementation 后,sync project 和 build,完成编译。

 

参考文档:

Maven Publish Plugin

Maven 教程

 

你可能感兴趣的:(Android,maven,java,android)