当前位置:首页 > 开发 > 开源软件 > 正文

[Maven学习笔记八]Maven常用插件应用

发表于: 2014-08-03   作者:bit1129   来源:转载   浏览:
摘要: 常用插件及其用法位于:http://maven.apache.org/plugins/   1. Jetty server plugin 2. Dependency copy plugin 3. Surefire Test plugin 4. Uber jar plugin           1. Jetty Pl

常用插件及其用法位于:http://maven.apache.org/plugins/

 

1. Jetty server plugin

2. Dependency copy plugin

3. Surefire Test plugin

4. Uber jar plugin

 

 

 

 

 

1. Jetty Plugin

            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>8.1.14.v20131031</version>

                <configuration>
                    <scanIntervalSeconds>3</scanIntervalSeconds>
                    <connectors>
                        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                            <port>8089</port>
                            <maxIdleTime>60000</maxIdleTime>
                        </connector>
                    </connectors>
                </configuration>
            </plugin>

 

功能:为web项目添加一个内置的web服务器,通过这个插件,在plugins目录下会有一个jetty插件项

 

2. Copy Plugin

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/flume.kafka.dependencies
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

 

将添加了这个plugin的maven模块,在做install操作时将该模块依赖的jar包全部copy到指定目录下

 

3. Surefire Test Plugin

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <useSystemClassLoader>false</useSystemClassLoader>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

 用于运行单元测试,在该模块下会添加一个插件,

 

4. Uber Jar Plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>

依赖属性为provided的Dependency不会打到uber jar中

 

5. maven-compiler-plugin

对模块按照指定的JDK版本进行编译:

 

 

 

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF8</encoding>
                </configuration>
            </plugin>
 

 

 

 

1.maven-compiler-plugin

参考:http://maven.apache.org/plugins/maven-compiler-plugin/

在多人项目中,比较好的开发实践是项目本身指定JDK的版本,而不是项目组中的每个成员自己来指定。每个人使用的JDK版本不一致,导致代码的编译问题时有发生。

Maven中,可以使用maven-compiler-plugin来指定项目的jdk版本,

在用户管理这个web应用中,有一个聚合和父模块user-project和三个功能模块

user-project

    user-core

    user-service

    user-web

 

我们可以为每个模块添加maven-compiler-plugin的版本控制,但是这样一来,重复代码甚多,如果要更改JDK的版本,每个功能模块的pom.xml都要修改一次,更合理的做法是在父模块user-project中进行定义,功能模块继承它,这类似于依赖的继承,在user-project的pom中添加如下代码:

 

<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <!--指定代码1.6版本兼容->
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

 

在user-core,user-service和user-web中,分别做如下定义以继承user-project的maven-compiler-plugin的配置

 

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

 

问题:

做如上定义后,在user-core中使用JDK7的类,如ForkJoinPool,没有编译错,编译能成功,这是为什么??

 

2.maven-rar-plugin

对指定的目录打rar包,参考http://maven.apache.org/plugins/maven-rar-plugin/

 

3. 编译时跳过module下的测试代码的测试

 

 

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.12.4</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>

 

4.打成jar包时,指定mainClass

 

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>sparkStreaming.NetworkWordCount</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
</plugin>

 

5.将一个Maven模块,连同它依赖的jar打包成Uber Jar

 

 

<!-- Maven shade plug-in that creates uber JARs -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>

 

 

 

 

 

[Maven学习笔记八]Maven常用插件应用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
针对问题,maven web项目如何部署到容器中,如何测试,如何提交svn,在本篇中就有了答案。 maven的
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插
先将我用到的自定义变量贴过来,防止插件中出现一些变量,大家不理解 Java代码 <!-- 全局属性配
何为生命周期: Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工
本文转自:http://blog.csdn.net/lslxdx/article/details/7237406 一、maven-resources-plugin 配置
通过建立自己的私服,就可以降低中央仓库负荷、节省外网宽带、加速Maven构建、自己部署构件等,从而
Maven是Java工程常用的项目管理工具,通过Maven可以管理项目的各个生命周期。Maven本质是一个插件框
1.安装和配置   去maven官网下载,这里用的是3.1的版本。然后解压。我这里是D:\Java\IDE\apache-m
转自: http://blog.csdn.net/lhzx_zjg/article/details/6096060 1、 什么是Maven Maven是一个项目管
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号