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

编程技术  /  houtizong 发布于 3年前   69

常用插件及其用法位于: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>

 

 

 

 

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客