【sping +maven 】pom文件plugin介绍

获取插件信息

比如查看插件目标有哪些参数可以使用、使用方式、示例、常见问题等:

网址:http://maven.apache.org/plugins/index.html

下载地址:http://repo1.maven.org/maven2/org/apache/maven/plugins/


先将我用到的自定义变量贴过来,防止插件中出现一些变量,大家不理解   


Java代码   
<!-- 全局属性配置 -->  
<properties>  
    <project.build.name>tools</project.build.name>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
</properties>  

project.build.name:  用来定义war包名称  
project.build.sourceEncoding:  用来定义资源文件的编码格式  

下面开始讲解常用的maven插件配置  

一、编译插件   

Java代码   
<!-- 编译插件 -->  

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.1</version>
   <configuration>
      <source>1.8</source>
      <target>1.8</target>
   </configuration>
</plugin>

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

二、设置资源文件的编码方式 

Java代码   

<!-- 设置资源文件的编码方式 -->  
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <phase>compile</phase> </execution> </executions> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
            
<!-- 将配置文件复制到target目录的config目录底下 -->
             <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution> <!-- 复制配置文件 -->
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>application.yml</include>
                                        <!--<include>*.txt</include>-->
                                        <include>logback*/**</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/config</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制<encoding>${project.build.sourceEncoding}</encoding>   

三、自动拷贝jar包到target目录   

Java代码   
<!-- 依赖插件 -->  

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


在部署war包时,需要将项目依赖的jar包,也打到war包中,因此就会用到上述插件  

四、生成源代码jar包   
Java代码   

<!-- 源代码打包插件 -->  
<plugin>  
    <artifactId>maven-source-plugin</artifactId>  
    <version>2.1</version>  
    <configuration>  
        <!-- <finalName>${project.build.name}</finalName> -->  
        <attach>true</attach>  
        <encoding>${project.build.sourceEncoding}</encoding>  
    </configuration>  
    <executions>  
        <execution>  
            <phase>compile</phase>  
            <goals>  
                <goal>jar</goal>  
            </goals>  
        </execution>  
    </executions>  
</plugin>  

该插件主要用于在打jar包时,把源代码也打成jar包  

五、将项目打成jar包   
Java代码   
<!-- jar包插件 -->  

<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-jar-plugin</artifactId>  
    <version>2.4</version>  
    <configuration>  
        <archive>  
            <manifest>  
                <!-- 告知 maven-jar-plugin添加一个 Class-Path元素到 MANIFEST.MF文件,以及在Class-Path元素中包括所有依赖项 -->  
                <addClasspath>true</addClasspath>  
                <!-- 所有的依赖项应该位于 lib文件夹 -->  
                <classpathPrefix>lib/</classpathPrefix>  
                <!-- 当用户使用 lib命令执行JAR文件时,使用该元素定义将要执行的类名 -->  
                <mainClass>com.zhengtian.tools.service.phone.MobilePhoneTool</mainClass>  
            </manifest>  
        </archive>  
    </configuration>  
</plugin>  
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <!-- 添加index则不从mainfest中读取classpath,而是从Index.list中读取 -->
                        <!--  <index>true</index> -->
                        <manifest>
                            <!-- 当用户使用 lib命令执行JAR文件时,使用该元素定义将要执行的类名 -->  
                            <mainClass>com.whalecloud.uip.datasource.WhaleUipDatasourceApplication</mainClass>
                            <!-- 告知 maven-jar-plugin添加一个 Class-Path元素到 MANIFEST.MF文件,以及在Class-Path元素中包括所有依赖项 -->  
                            <addClasspath>true</addClasspath>
                            <!-- 所有的依赖项应该位于 lib文件夹 -->  
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>

                        <manifestEntries>
                            <Class-Path>./</Class-Path>
                        </manifestEntries>

                    </archive>
                    <excludes>
                        <exclude>*.yml</exclude>
                    </excludes>
                </configuration>
            </plugin>




原文链接:https://blog.csdn.net/qq_23167527/article/details/67635610