Files
Knowledge/1 使用/maven/Maven 依赖和插件导出指南.md

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. 在离线环境中设置

  1. 解压仓库包到离线机器的 ~/.m2/repository 目录

  2. 在离线环境中使用 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. 完整离线环境准备方案

  1. 在有网络的环境中:

下载所有依赖

mvn dependency:go-offline

下载所有插件

mvn dependency:resolve-plugins

打包本地仓库

tar -czvf maven-repo.tar.gz ~/.m2/repository

  1. 在离线环境中:

解压仓库

mkdir -p ~/.m2 tar -xzvf maven-repo.tar.gz -C ~/.m2

使用离线模式构建

mvn -o clean package

注意事项

  1. 确保在线和离线环境使用相同版本的 Maven

  2. 检查是否有系统范围的依赖(如通过 JAVA_HOME 设置的依赖)

  3. 考虑使用相同的操作系统环境,避免平台特定问题

  4. 对于多模块项目,需要确保所有模块的依赖都已下载

这种方法可以确保你在离线环境中拥有所有必要的插件和依赖,使构建过程能够顺利完成。