Maven 中的常见插件
1.Maven 内置插件1.配置编译插件2.资源拷贝插件
2.扩展插件1.Tomcat 插件2.Mybatis Generator 插件
3.插件管理1.父工程 POM2.子工程 POM
1.Maven 内置插件
Maven 自身拥有很多内置插件,每一个内置插件都代表了 Maven 的一种行为。Maven 在管理项目整个生命周期时,在不同的阶段处理的过程都是使用插件来具体完成。如:构建项目时使用构建插件、编译项目时使用编译插件、清除构建使用清除构建的插件、测试项目时使用测试插件、打包时使用资源拷贝插件以及打包插件。我们可以在不同阶段使用 Maven 中的不同命令来触发不同的插件来执行不同的工作。换言之,Maven 的插件是需要依赖命令来执行的Maven 在管理插件时也是通过坐标的概念和管理依赖的方式相同,通过坐标来定位唯一的一个插件在一般情况下,我们不需要额外配置 Maven 的内置插件,除非我们需要对插件做额外配置时才需要配置内置插件。如果我们重新配置了内置插件,那么则以我们配置的为主Maven 的插件配置需要在 pom.xml 文件中的< build>标签中使用< plugins>来配置现在在很多的 IDE 中都已经把 Maven 的常用命令通过界面中的按钮来体现,我们只要点击相应的按钮就等同于执行了相应的命令
1.配置编译插件
在 setings.xml 中配置全局编译插件
<profile>
<!-- 定义的编译器插件 ID,全局唯一
-->
<id>jdk
-1.8</id
>
<!-- 插件标记,activeByDefault 默认编译器,jdk 提供编译器版本
-->
<activation>
<activeByDefault>true</activeByDefault
>
<jdk>1.8</jdk
>
</activation
>
<!-- 配置信息 source
-源信息,target
-字节码信息,compilerVersion
-编译过程版本
-->
<properties>
<maven
.compiler
.source
>1.8</maven
.compiler
.source
>
<maven
.compiler
.target
>1.8</maven
.compiler
.target
>
<maven
.compiler
.compilerVersion
>1.8</maven
.compiler
.compilerVersion
>
</properties
>
</profile
>
在 pom.xml 文件中配置局部的编译插件
<build>
<plugins>
<plugin>
<groupId>org
.apache
.maven
.plugins
</groupId
>
<artifactId>maven
-compiler
-plugin
</artifactId
>
<version>3.8.1</version
>
<configuration>
<source>1.8</source
>
<target>1.8</target
>
<encoding>UTF
-8</encoding
>
</configuration
>
</plugin
>
</plugins
>
</build
>
2.资源拷贝插件
Maven 在打包时默认只将 src/main/resources 里的配置文件拷贝到项目中并做打包处理,而非 resource 目录下的配置文件在打包时不会添加到项目中。我们在使用 MyBatis 时,如果接口与 Mapper 文件在同一个目录中,在默认的情况下 Maven 打包的时候,对于 src/main/java 目录只打包源代码,而不会打包其他文件。所以 Mapper 文件不会打包到最终的 jar 文件夹中,也不会输出到 target 文件夹中,此时运行代码操作数据库时会报异常。
解决方案:
将 Mapper 文件放入到 resources 目录中配置资源拷贝插件,指定其拷贝文件的位置
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
2.扩展插件
1.Tomcat 插件
Tomcat 插件是 Maven 的扩展插件,其作用是为基于 Maven 开发的 Web 项目提供一个内置的 Tomcat 支持,这样我们在开发阶段可以不在依赖外部的 Tomcat 来运行 Web 项目,该插件目前使用的 Tomcat 版本为 Tomcat7。该插件的作用很强大,除了提供了 Tomcat 以外,还可以通过该插件实现项目的远程热部署
<!-- 配置 Tomcat 插件
-->
<plugin>
<groupId>org
.apache
.tomcat
.maven
</groupId
>
<artifactId>tomcat7
-maven
-plugin
</artifactId
>
<version>2.2</version
>
<configuration>
<!-- 配置 Tomcat 监听端口
-->
<port>8080</port
>
<!-- 配置项目的访问路径
(Application Context
) -->
<path>/</path
>
</configuration
>
</plugin
>
2.Mybatis Generator 插件
Mybatis Generator 插件可以根据数据库自动生成实体类、单表查询接口映射 xml 文件以及 POJO。
建表:
CREATE TABLE `users
` (
`userid
` int(11) NOT NULL
, `username
` varchar(20) DEFAULT NULL
, `userage
` int(11) DEFAULT NULL
, PRIMARY KEY (`userid
`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
修改 POM 文件,添加插件:
<!--配置 Generator 插件
-->
<build>
<plugins>
<plugin>
<groupId>org
.mybatis
.generator
</groupId
>
<artifactId>mybatis
-generator
-maven
-plugin
</artifactId
>
<version>1.3.5</version
>
<dependencies>
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
<version>5.1.38</version
>
</dependency
>
</dependencies
>
<!--指定配置文件的路径
-->
<configuration>
<configurationFile>$
{project
.basedir
}/src
/main
/resources
/generatorConfig
.xml
</configurationFile
>
<verbose>true</verbose
>
<overwrite>true</overwrite
>
</configuration
>
</plugin
>
</plugins
>
</build
>
添加 generator 配置文件:
<?xml version
="1.0" encoding
="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC
"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id
="testTables" targetRuntime
="MyBatis3">
<!-- 生成实体类实现序列化
-->
<plugin type
="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- 实体类中包含
toString() -->
<plugin type
="org.mybatis.generator.plugins.ToStringPlugin" ></plugin
>
<commentGenerator>
<!-- 是否去除自动生成的注释
true:是 :
false:否
-->
<property name
="suppressAllComments" value
="true" />
</commentGenerator
>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码
-->
<jdbcConnection driverClass
="com.mysql.jdbc.Driver"
connectionURL
="jdbc:mysql://localhost:3306/demo2" userId
="root"
password
="Root">
</jdbcConnection
>
<!-- 默认
false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为
true时把JDBC DECIMAL 和
NUMERIC 类型解析为java
.math
.BigDecimal
-->
<javaTypeResolver>
<property name
="forceBigDecimals" value
="false" />
</javaTypeResolver
>
<!-- targetProject
:生成PO类的位置
-->
<javaModelGenerator targetPackage
="com.dqcgm.pojo"
targetProject
=".\src">
<!-- enableSubPackages
:是否让schema作为包的后缀
-->
<property name
="enableSubPackages" value
="false" />
<!-- 从数据库返回的值被清理前后的空格
-->
<property name
="trimStrings" value
="true" />
</javaModelGenerator
>
<!-- targetProject
:mapper映射文件生成的位置
-->
<sqlMapGenerator targetPackage
="com.dqcgm.mapper"
targetProject
=".\src">
<!-- enableSubPackages
:是否让schema作为包的后缀
-->
<property name
="enableSubPackages" value
="false" />
</sqlMapGenerator
>
<!-- targetPackage:mapper接口生成的位置
-->
<javaClientGenerator type
="XMLMAPPER"
targetPackage
="com.dqcgm.mapper"
targetProject
=".\src">
<!-- enableSubPackages
:是否让schema作为包的后缀
-->
<property name
="enableSubPackages" value
="false" />
</javaClientGenerator
>
<!-- 指定数据库表
-->
<table schema
="" tableName
="users"></table
>
</context
>
</generatorConfiguration
>
添加 generator 配置文件的 DTD 文件: 运行 generator 插件生成代码:
3.插件管理
在 Maven 中提供了和依赖管理相同的方式用于来管理插件,我们可以在父工程中声明插件,然后在具体的子项目中按需引入不同的插件
1.父工程 POM
<pluginManagement>
<plugins>
<plugin>
<groupId>org
.apache
.tomcat
.maven
</groupId
>
<artifactId>tomcat7
-maven
-plugin
</artifactId
>
<version>2.2</version
>
</plugin
>
<plugin>
<groupId>org
.mybatis
.generator
</groupId
>
<artifactId>mybatis
-generator
-maven
-plugin
</artifactId
>
<version>1.3.5</version
>
</plugin
>
</plugins
>
</pluginManagement
>
2.子工程 POM
<plugin>
<groupId>org
.apache
.tomcat
.maven
</groupId
>
<artifactId>tomcat7
-maven
-plugin
</artifactId
>
<configuration>
<!-- 配置 Tomcat 监听端口
-->
<port>8080</port
>
<!-- 配置项目的访问路径
(Application Context
) -->
<path>/</path
>
</configuration
>
</plugin
>
<!--配置 Generator 插件
-->
<plugin>
<groupId>org
.mybatis
.generator
</groupId
>
<artifactId>mybatis
-generator
-maven
-plugin
</artifactId
>
<dependencies>
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
<version>5.1.38</version
>
</dependency
>
</dependencies
>
<!--指定配置文件的路径
-->
<configuration>
<configurationFile>$
{project
.basedir
}/src
/main
/resources
/generato rConfig
.xml
</configurationFile
>
<verbose>true</verbose
>
<overwrite>true</overwrite
>
</configuration
>
</plugin
>