MAVEN - 使用maven-dependency-plugin的应用场景是什么?

简述

maven-dependency-plugin是MAVEN的一个插件。

作用

该插件主要用于管理项目中的依赖,使用该插件可以方便地查看、下载、复制和解压缩依赖,还支持生成依赖树和依赖报告。

功能

该插件有很多可用的GOAL,大部分与依赖构建、依赖分析和依赖解决相关,这些GOAL可以直接用MAVEN的命令操作。
官方定义的所有的GOAL:https://maven.apache.org/plugins/maven-dependency-plugin/index.html

在这里插入图片描述

常见的操作如下:
(1)mvn dependency:tree,显示该项目的依赖关系树;
在这里插入图片描述
(2)mvn dependency:analyze,分析项目依赖,确定哪些依赖是已使用已声明的,已使用未声明的,未使用已声明的?
在这里插入图片描述

(3)mvn dependency:copy,将配置在插件中的JAR包复制到指定位置;
copy的配置:https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
(4)mvn dependency:copy-dependencies,将项目POM文件中定义的所有依赖及其传递依赖复制到指定位置;
copy-dependencies的配置:https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html
(5)mvn dependency:unpack,将配置在插件中的JAR包复制到指定位置,并且将JAR包进行解压缩;
(6)mvn dependency:unpack-dependencies,将项目POM文件中定义的所有依赖及其传递依赖复制到指定位置,并且将JAR包进行解压缩;

应用场景

(1)某个特殊的JAR包,无法直接通过MAVEN依赖获取或者说MAVEN仓库内也不存在,那么如何将我们所需要的JAR包打入我们的生产JAR包中呢?使用:mvn dependency:copy 可以解决该问题
(2)某个特殊的JAR包内包含我们需要的文件,或者说我们如何将所需的文件从JAR包中提取出来并放入指定的位置?使用:mvn dependency:unpack 可以解决该问题

如何使用

第一步,在POM文件中添加如下内容:
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>3.2.0</version>
      <!--<executions> 标签中添加需要执行的操作,可以添加的操作如下: -->
      <executions>
        ...
      </executions>
    </plugin>
  </plugins>
</build>
第二步,根据需要添加相关操作:
  1. 将所有依赖包复制到 target/libs 目录下。
<execution>
  <id>copy-dependencies</id>
  <phase>package</phase>
  <goals>
    <goal>copy-dependencies</goal>
  </goals>
  <configuration>
    <outputDirectory>${
    
    project.build.directory}/libs</outputDirectory>
  </configuration>
</execution>
  1. 将所有依赖包解压到 target/classes/lib 目录下。
<execution>
  <id>unpack-dependencies</id>
  <phase>package</phase>
  <goals>
    <goal>unpack-dependencies</goal>
  </goals>
  <configuration>
    <outputDirectory>${
    
    project.build.directory}/classes/lib</outputDirectory>
  </configuration>
</execution>
  1. 将依赖列表输出到 target/dependency-report.txt 报告文件中。
<execution>
  <id>dependency-report</id>
  <phase>compile</phase>
  <goals>
    <goal>list</goal>
  </goals>
  <configuration>
    <outputFile>${
    
    project.build.directory}/dependency-report.txt</outputFile>
  </configuration>
</execution>
  1. 将junit-4.11.jar复制到${project.build.directory}/lib/lib1目录下,将slf4j-log4j12-1.7.7.jar复制到${project.build.directory}/lib/lib2目录下。
<execution>
	<id>copy</id>
	<phase>package</phase>
	<goals>
		<goal>copy</goal>
	</goals>
	<configuration>
		<artifactItems>
			<artifactItem>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.11</version>
				<outputDirectory>${
    
    project.build.directory}/lib/lib1</outputDirectory>
			</artifactItem>
			<artifactItem>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>1.7.7</version>
				<outputDirectory>${
    
    project.build.directory}/lib/lib2</outputDirectory>
			</artifactItem>
		</artifactItems>
	</configuration>
</execution>
  1. 将dubbo-2.8.4.jar文件中META-INF/assembly/bin下的所有文件复制到${project.build.directory}/dubbo目录中。
<execution>
	<id>unpack</id>
	<phase>package</phase>
	<goals>
		<goal>unpack</goal>
	</goals>
	<configuration>
		<artifactItems>
			<artifactItem>
				<groupId>com.alibaba</groupId>
				<artifactId>dubbo</artifactId>
				<version>2.8.4</version>
				<outputDirectory>${
    
    project.build.directory}/dubbo</outputDirectory>
				<includes>META-INF/assembly/bin\**</includes>
			</artifactItem>
		</artifactItems>
	</configuration>
</execution>

猜你喜欢

转载自blog.csdn.net/goodjava2007/article/details/126519696