4.9 KiB
导出所有依赖
Maven 提供了几种方法来导出项目的所有依赖:
1. 使用 dependency:copy-dependencies 插件
mvn dependency:copy-dependencies -DoutputDirectory=target/lib
这会将所有依赖复制到 target/lib 目录中。
2. 使用 dependency:tree 生成依赖树
mvn dependency:tree > dependencies.txt
这会生成一个依赖树文本文件,显示所有传递依赖。
3. 使用 assembly 插件创建包含所有依赖的 JAR
在 pom.xml 中添加:
maven-assembly-plugin 3.3.0 jar-with-dependencies make-assembly package single然后运行 mvn package,会生成一个包含所有依赖的 JAR 文件。
查看和导出 Maven 插件
1. 查看项目中使用的所有插件
mvn help:effective-pom
这会显示有效 POM,包含所有插件配置。
2. 列出所有可用的插件
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-help-plugin
3. 导出插件信息
可以将有效 POM 输出到文件:
mvn help:effective-pom -Doutput=effective-pom.xml
高级用法
导出依赖为 classpath 格式
mvn dependency:build-classpath -Dmdep.outputFile=classpath.txt
排除特定范围的依赖
mvn dependency:copy-dependencies -DoutputDirectory=lib -DexcludeScope=provided
只导出特定范围的依赖
mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=runtime
这些命令可以帮助你管理 Maven 项目的依赖和插件,便于部署或分析项目结构。
如何将 maven 插件依赖的 jar 包导出,因为我想要到离线环境进行编译
导出 Maven 插件及其依赖到离线环境
要将 Maven 插件及其依赖导出以便在离线环境中使用,你需要以下几个步骤:
1. 下载所有项目依赖和插件依赖
方法一:使用 dependency:go-offline 插件
mvn dependency:go-offline
这个命令会下载项目所有依赖和插件依赖到本地仓库(默认在 ~/.m2/repository),但不会复制到项目目录。
方法二:完整下载所有依赖
mvn clean compile dependency:resolve-plugins
这会下载编译所需的依赖和插件。
2. 将本地仓库打包
tar -czvf maven-repo.tar.gz ~/.m2/repository
然后将这个压缩包复制到离线环境中。
3. 在离线环境中设置
-
解压仓库包到离线机器的
~/.m2/repository目录 -
在离线环境中使用 Maven 时添加
-o参数(offline 模式):
mvn -o clean package
4. 更精确的插件依赖导出方法
如果你只需要特定插件的依赖:
创建插件依赖导出配置
在 pom.xml 中添加:
org.apache.maven.plugins maven-dependency-plugin 3.3.0 copy-plugin-dependencies generate-sources copy-dependencies runtime jar ${project.build.directory}/plugin-dependencies false然后运行:
mvn dependency:copy-dependencies
5. 完整离线环境准备方案
- 在有网络的环境中:
下载所有依赖
mvn dependency:go-offline
下载所有插件
mvn dependency:resolve-plugins
打包本地仓库
tar -czvf maven-repo.tar.gz ~/.m2/repository
- 在离线环境中:
解压仓库
mkdir -p ~/.m2 tar -xzvf maven-repo.tar.gz -C ~/.m2
使用离线模式构建
mvn -o clean package
注意事项
-
确保在线和离线环境使用相同版本的 Maven
-
检查是否有系统范围的依赖(如通过 JAVA_HOME 设置的依赖)
-
考虑使用相同的操作系统环境,避免平台特定问题
-
对于多模块项目,需要确保所有模块的依赖都已下载
这种方法可以确保你在离线环境中拥有所有必要的插件和依赖,使构建过程能够顺利完成。