8、maven插件的使用场景

1、测试插件
maven-surefire-plugin 是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的 surefire:test 命令会默认绑定maven执行的 test 阶段。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
    <configuration>
        <skipTests>true</skipTests>//跳过测试用例
    </configuration>
</plugin>

2、编译插件

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>//源代码编译版本
        <target>1.6</target>//目标平台编译版本
        <includes>
            <include>**/*.java</include>
        </includes>
        <encoding>${project.build.sourceEncoding}</encoding>//字符集编码,这里引用全局属性
    </configuration>
</plugin>

3、打包插件 jar

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.picc.StartMain</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

依赖的jar包完全需要被添加进MANIFEST.MF(jar包解压缩后:jar包名/META-INF/MANIFEST.MF)的Class-Path。如果不添加 manifest,最终jar包运行时只要依赖其他jar包就会报错

3、打包插件:war

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <warName>ermss</warName>
        <webResources>
            <resource>
                <directory>src/main/webapp</directory>
                <excludes>
                    <exclude>**/*.jpg</exclude>
                </excludes>
            </resource>
        </webResources>
    </configuration>
</plugin>

4、依赖插件:copy依赖jar包

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.6</version>  
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <!-- 为内置变量,缺省为project.build.directory为Maven内置变量,缺省为target−−>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <!-- 表示是否不包含间接依赖的包 --> 
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <!-- 表示复制的jar文件去掉版本信息 -->  
                <stripVersion>false</stripVersion>  
            </configuration>
        </execution>
    </executions>
</plugin>

5、配置文件放在jar包外面:
(1)打包时忽略配置文件‘
(2)复制配置文件到指定目录下

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>  
                <excludes>  
                    <exclude>*.properties</exclude>
                    <exclude>*.xml</exclude>
                </excludes>  
            </resource>
        </resources>
    
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <excludes>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>*.properties</exclude>
                        <exclude>*.xml</exclude>
                    </excludes>
                </configuration>
            </plugin>
        
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            <!-- 将本工程例外文件copy至指定路径下 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
<!--                            <encoding>UTF-8</encoding> -->
                            <!-- 指定文件输出路径,会将原始路径及其文件全部copy -->
                            <outputDirectory>${project.build.directory}/conf</outputDirectory>
                            <resources>
                                <resource>
                                    <targetPath>${project_loc}</targetPath>
                                    <directory>src/main/resources</directory>
                                    <!-- 将需要copy的配置文件配置到<include></include>标签内。 -->
                                    <includes>
                                        <!-- <include>dubbo.properties</include> -->
                                        <!-- <include>dataSource.properties</include> -->
                                        <!-- <include>dubbo/**</include> -->
                                        <include>**/**</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
        </plugins>
    </build>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,988评论 6 342
  • 1.编写POM Maven项目的核心文件是pom.xml,POM(Project Objcet Model)项目对...
    zlcook阅读 5,950评论 7 26
  • Maven编译代码的相关命令 第一、main目录下的主代码编写完毕后,使用Maven进行编译,在项目根目录下运行命...
    加油小杜阅读 1,274评论 0 2
  • 所有项目的构建都是有生命周期的,这个生命周期包括:项目清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生...
    zlcook阅读 2,846评论 0 21