当前位置:   article > 正文

maven插件的使用_copy-dependencies

copy-dependencies

maven插件的使用

1 前言

最近在做某个需求的时候,由于需要将某个功能打成一个jar包,以便其他模块也能使用,于是我就在公司项目下面新建了两个子模块,一个放后台服务,一个放前端的页面(不要问我为什么不用vue啊),然后不可避免的就碰到很多问题(主要是对maven打包不熟悉,我的两个jar包引入项目后一直不生效)。所以趁着周六休息,来学习一下maven插件的使用。

先来重点看如下两个插件,其他插件以后用到了再记录

maven-dependency-plugin

maven-assembly-plugin

2 maven-dependency-plugin

这个插件可以做什么事情呢?由goal标签指定

copy:将指定坐标对应的jar包拷贝到指定目录

unpack:将指定坐标对应的jar包解压到指定目录

2.1 copy

下述配置在打包阶段会将junit包拷贝到项目的target/alternateLocation目录下

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <version>3.8.1</version>
                        <type>jar</type>
                        <overWrite>false</overWrite>
                        <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.2 copy-dependencies

copy命令的区别是,copy是拷贝指定坐标的jar包,而copy-dependencies则是拷贝项目依赖的所有jar包,具体用法如下

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.3 unpack

unpack命令可以将指定的jar包解压到指定的目录,需要注意的是,如果指定的触发阶段为compile,那么解压之后的内容会一起打包到当前项目中,而如果是package则不会,它只会打包自己项目内容

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <!-- 为该操作定义一个名字 -->
            <id>unpack</id>
            <!-- 该操作在生命周期的那个阶段触发 -->
            <phase>compile</phase>
            <goals>
                <!-- 插件的具体操作,这里只介绍4种-->
                <goal>unpack</goal>
            </goals>
            <!-- 操作的配置 -->
            <configuration>
                <!-- 配置 -->
                <artifactItems>
                    <!-- 具体配置,此处一般是针对某个坐标的具体配置 -->
                    <artifactItem>
                        <!-- 指定坐标 -->
                        <groupId>org.example.it</groupId>
                        <artifactId>po.webresource</artifactId>
                        <version>1.0-SNAPSHOT</version>
                        <type>jar</type>
                        <overWrite>true</overWrite>
                        <!-- 输出路径 -->
                        <outputDirectory>${project.build.directory}/classes</outputDirectory>
                        <!-- 坐标对应的jar包的名称 -->
                        <destFileName>po.webresource-1.0-SNAPSHOT.jar</destFileName>
                        <!-- 操作的内容 -->
                        <includes>**/*.html,**/*.js</includes>
                        <!-- 排除的内容 -->
                        <excludes>**/*test.html</excludes>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

2.4 unpack-dependencies

unpack命令的区别是,unpack是解压指定坐标的jar包,而unpack-dependencies则是解压项目依赖的所有jar包,具体用法如下

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>unpack-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
                <includes>**/*.class</includes>
                <excludes>**/*.properties</excludes>
                <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3 maven-assembly-plugin

有时候我们需要将项目依赖抽出来单独打包,或者将项目里面的html、js等静态资源抽取出来打包,就需要用到这个插件了。插件的使用如下

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <!-- 操作名,自己指定 -->
            <id>assembly</id>
            <!-- 操作触发的阶段 -->
            <phase>package</phase>
            <goals>
                <!-- 只执行一次-->
                <goal>single</goal>
            </goals>
            <configuration>
                <!-- 自己指定的名字,和assemblies.xml配置文件中的id标签对应 -->
                <finalName>html</finalName>
                <!-- 配置文件的位置和名字(与pom.xml)的相对路径-->
                <descriptors>assemblies.xml</descriptors>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

除了需要在pom中配置上述内容外,还需要引入一个配置文件assemblies.xml(名字由自己指定)

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>html</id>
    <formats>
        <!-- 生成一个zip文件 -->
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <!-- 从编译后的文件中拷贝 -->
            <directory>${project.build.directory}/classes</directory>
            <!-- 拷贝到的文件存放的路径 -->
            <outputDirectory></outputDirectory>
            <useDefaultExcludes>true</useDefaultExcludes>
            <excludes>
                <!-- 哪些文件不拷贝 -->
                <exclude>**/*.log</exclude>
                <exclude>**/${project.build.directory}/**</exclude>
            </excludes>
        </fileSet>
    </fileSets>
</assembly>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

上述操作都只涉及这两个插件的简单使用,后面有用到再补充

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/307970
推荐阅读
相关标签
  

闽ICP备14008679号