大话 Maven 系列笔记(五)——插件和常用设置

2021/6/27 23:22:31

本文主要是介绍大话 Maven 系列笔记(五)——插件和常用设置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第五章、Maven插件

1、Maven 插件介绍

Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

mvn [plugin-name]:[goal-name]  

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

mvn compiler:compile

 

2、tomcat插件

添加插件在build中

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <port>8080</port>
        <uriEncoding>UTF-8</uriEncoding>
        <path>/xinzhi</path>
        <finalName>xinzhi</finalName>
    </configuration>
</plugin>

点击idea右侧的maven我们可以方便的看到我们使用了什么插件,并可以点击执行相应的命令

 通过插件和命令我们都可以启动项目了,都不用部署到tomcat里了

 

3、war包打插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <warName>test</warName>
        <webResources>
            <resource>
                <directory>src/main/webapp/WEB-INF</directory>
                <filtering>true</filtering>
                <targetPath>WEB-INF</targetPath>
                <includes>
                    <include>web.xml</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

执行命令 mvn clean package

 

4、jar包的插件

maven-jar-plugin,默认的打包插件,用来打普通的project JAR包; ​maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包; ​maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。 我们日常使用的以maven-assembly-plugin为最多,因为大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <!-- 绑定到package生命周期 -->
            <phase>package</phase>
            <!--设置运行目标-->
            <goals>
                <!-- 只运行一次 -->
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>com.xinzi.Test</mainClass> <!-- 你的主类名 -->
            </manifest>
        </archive>
        
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

 

 

第六章、常用设置

1、properties里面的配置

<properties>
    <maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本
    <maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目构建使用的编码,避免中文乱码
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码
</properties>

 

2、全局变量

在properties定义标签,这个标签就是一个变量, 标签的文本就是变量的值。

使用全局变量表示多个依赖使用的版本号。使用步骤:

1.在properties标签中,定义一个标签,指定版本的值

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <!--自定义变量-->
  <spring.version>5.2.5.RELEASE</spring.version>
  <junit.version>4.11</junit.version>
</properties>

2.使用全局变量, 语法 ${变量名}

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <!-- 使用${变量名}来引用上面的定义-->
  <version>${spring.version}</version>
</dependency>
​
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>${spring.version}</version>
</dependency>

 

3、指定资源位置

处理的配置文件的信息, maven默认处理配置文件

①:maven会把src/main/resources目录中的文件, 拷贝到target/classes目录下

②:maven只处理src/main/java目录中的 .java文件,把这些java文件编译为class,拷贝到 target/classes目录中。 不处理其他文件。

但是有些小伙伴就喜欢在src中填写配置文件,这样就导致 src/main/java目录中的配置文件会被过滤掉,因此需要加上如下配置:

<build>
  <!--资源插件
      告诉maven把 src/main/java目录中的 指定扩展名的文件 拷贝到 target/classes目录中。
  -->
  <resources>
    <resource>
      <directory>src/main/java</directory><!--所在的目录-->
      <includes>
      <!--包括目录下的.properties,.xml 文件都会扫描到-->
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
        <!--  filtering 选项 false 不启用过滤器, *.property 已经起到过
        滤的作用了 -->
      <filtering>false</filtering>
    </resource>
  </resources>
</build>

 

4、Maven_Web工程的自动部署

在pom.xml 中添加如下配置:

<!--配置当前工程构建过程中的特殊设置   -->
<build>
    <finalName>AtguiguWeb</finalName>
    <!-- 配置构建过程中需要使用的插件 -->
    <plugins>
        <plugin>
            <!-- cargo是一家专门从事启动Servlet容器的组织 -->
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.2.3</version>
            
            <!-- 针对插件进行的配置 -->
            <configuration>
                <!-- 配置当前系统中容器的位置 -->
                <container>
                    <containerId>tomcat6x</containerId>
                    <home>D:\DevInstall\apache-tomcat-6.0.39</home>
                </container>
                <configuration>
                    <type>existing</type>
                    <home>D:\DevInstall\apache-tomcat-6.0.39</home>
                    <!-- 如果Tomcat端口为默认值8080则不必设置该属性 -->
                    <properties>
                        <cargo.servlet.port>8989</cargo.servlet.port>
                    </properties>
                </configuration>
            </configuration>
           
            <!-- 配置插件在什么情况下执行 -->
            <executions>  
                <execution>  
                    <id>cargo-run</id>
                    <!-- 生命周期的阶段 -->  
                    <phase>install</phase>  
                    <goals>
                        <!-- 插件的目标 -->  
                        <goal>run</goal>  
                    </goals>  
                </execution>  
            </executions>
        </plugin>
    </plugins>
</build>

执行mvn deploy 命令

 

篇幅较长,分为五篇来记录,其他章节请见:

大话 Maven 系列笔记(一)——Maven概述:https://www.cnblogs.com/poscana/p/14940497.html

大话 Maven 系列笔记(二)——Maven依赖:https://www.cnblogs.com/poscana/p/14940545.html

大话 Maven 系列笔记(三)——pom文件:https://www.cnblogs.com/poscana/p/14940562.html

大话 Maven 系列笔记(四)——Maven仓库:https://www.cnblogs.com/poscana/p/14940577.html

大话 Maven 系列笔记(五)——插件和常用设置:https://www.cnblogs.com/poscana/p/14940596.html



这篇关于大话 Maven 系列笔记(五)——插件和常用设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程