【MAVEN】项目管理插件maven-plugins

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
    Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
    Maven本质上是一个插件框架,他定义好了POM后,由插件来完成构建功能。今天主要介绍一些常用的Maven框架。

一.清理插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
</plugin>

    该插件用来删除在构建期间生成的文件或文件夹。扫描并删除以下文件夹:project.build.directory,project.build.outputDirectory,project.build.testOutputDirectory, and project.reporting.outputDirectory。
    使用方式: mvn clean

二.编译插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

source: 源代码编译JDK版本
target:目标平台编译版本
encoding:字符集编码

    该插件包含两个goals:

  • compiler:compile编译mainSource,在适宜的阶段自动执行。
  • compiler:testCompile编译testSource,在适宜的阶段自动执行。

    使用方式: mvn compiler

三.资源插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.1</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <!-- 绑定到package阶段,自动执行 -->
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <encoding>UTF-8</encoding>
                <outputDirectory>outputdir</outputDirectory>
                <resources>
                    <resource>
                        <includes>
                            <!-- 资源中包含的文件匹配符 -->
                            <include>*.txt</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
        </execution>
    </executions>
</plugin>

    该插件用于复制指定的资源文件到output directory. 有三个goals:

  • resources:resources 复制主代码的资源文件到指定的输出目录中,一般是开发包下的资源文件(project.build.resources),也就是src/main/resources下的。一般用于资源文件的打包
  • resources:testResources复制测试代码的资源文件到指定的输出目录中,一般是测试包下的资源文件(project.build.testResources)。
  • resources:copy-resources复制指定的资源文件到指定的目录中。专用来在多模块中复制资源使用。

四.依赖插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <!-- 绑定到compile期间 -->
            <phase>compile</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <!-- 表示是否不包含间接依赖的包 -->
                <excludeTransitive>false</excludeTransitive>
                <!-- 表示复制的jar文件去掉版本信息 -->
                <stripVersion>true</stripVersion>
            </configuration>
        </execution>
    </executions>
</plugin>

    该插件用于从本地或者远程的repository中复制(或/和)解压依赖的jar到指定的位置。当前插件的goals较多,在此就不一一列举了。列举常用的如下:
- dependency:copy将插件配置部分中定义的工件列表(<artifactItems>),并将其复制到指定的位置。
- dependency:copy-dependencies需要项目直接依赖项和可选传递依赖项的列表,并将它们复制到指定的位置。

五.打包插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <!-- 可以有多个descriptorRefs -->
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <!-- 可以指定一个特殊的descriptor -->
        <!-- 
        <descriptors>
            <descriptor>src/assembly/src.xml</descriptor>
        </descriptors>
        -->
        <!-- 绑定执行期间-->
        <executions>
            <execution>
                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                <phase>package</phase> <!-- bind to the packaging phase -->
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executoins>
        <!-- 创建一个可执行的jar -->
        <archive>
            <manifest>
              <mainClass>org.sample.App</mainClass>
            </manifest>
         </archive>
    </configuration>
</plugin>

    该插件主要用于将依赖的jar,模块,site文档,其他的文件等聚合到一个单独的archive中。archive支持如下格式:
         - zip
         - tar
         - tar.gz (or tgz)
         - tar.bz2 (or tbz2)
         - jar
         - dir
         - war
         - and any other format that the ArchiveManager has been configured for

想要使用Assembly插件,你需要:

     - 选择或者写好一个descriptor去使用
     - 在你的项目中配置好Assembly插件
    - 在你的项目中执行 mvn assembly:single or mvn package

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Maven插件是一种可插拔的工具,可以在Maven构建过程中执行特定的任务。其中,maven-dependency-plugin和maven-surefire-plugin是两个常用的插件maven-dependency-plugin插件可以用来管理项目依赖,可以帮助我们列出项目中的依赖关系,复制依赖文件到指定目录,解压依赖文件等。常用的配置包括: - list:列出项目依赖 - copy-dependencies:将所有依赖文件复制到指定目录 - unpack:解压指定的依赖文件 maven-surefire-plugin插件则是用来执行项目的单元测试的。它可以在Maven构建过程中自动执行单元测试,并生成测试报告。常用的配置包括: - includes/excludes:指定要执行的测试类或排除的测试类 - parallel:指定测试是否并行执行 - reportsDirectory:指定测试报告生成的目录 在POM文件中配置这两个插件,可以通过以下方式: ``` <build> <plugins> <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}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <includes> <include>**/*Test.java</include> </includes> <parallel>methods</parallel> <threadCount>10</threadCount> <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> </configuration> </plugin> </plugins> </build> ``` 以上是一个简单的POM文件中Maven插件配置maven-dependency-plugin和maven-surefire-plugin的示例,其中maven-dependency-plugin在package阶段执行复制依赖文件的任务,maven-surefire-plugin在test阶段执行单元测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑起来贼好看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值