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

来源:互联网 发布:什么软件看小说免费 编辑:程序博客网 时间:2024/05/18 13:43

    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 0
原创粉丝点击