1、 mybatis-generator-maven-plugin
這是個好東西,實體類、mapper.java、 mapper.xml 文件,不再用去一個個的手寫了,只需動下小手手,輕輕一點,手起刀落,自動生成
第一步: pom.xml配置html
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--這裏的路徑要和下面的generatorConfig.xml 文件路徑一致--> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.0</version> </dependency> </dependencies> </plugin>
第二步: 建立generatorConfig.xml,配置完整的配置信息(耐心看一下,不少地方均可以通用的,標 TODO 的是根據本身的數據庫配置須要改動的)java
<generatorConfiguration> <!-- 配置mysql 驅動jar包路徑.用了絕對路徑 --> <classPathEntry location="/users/apple/.m2/repository/mysql/mysql-connector-java/8.0.15/mysql-connector-java-8.0.15.jar"/> <context id="theMall" targetRuntime="MyBatis3"> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <property name="javaFileEncoding" value="UTF-8"/> <!-- 爲模型生成序列化方法--> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <!-- 爲生成的Java模型建立一個toString方法 --> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!-- 防止生成的代碼中有不少註釋,加入下面的配置控制 --> <commentGenerator> <property name="suppressAllComments" value="true"/> <property name="suppressDate" value="true"/> <property name="addRemarkComments" value="true"/> </commentGenerator> <!-- TODO 修改數據庫鏈接 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://172.0.0.1:3306/db_name?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai" userId="root" password="123456"> <property name="nullCatalogMeansCurrent" value="true"/> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- TODO修改數據表對應的Entity層 --> <javaModelGenerator targetPackage="com.abc.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- TODO修改 sql dao 映射配置文件 --> <sqlMapGenerator targetPackage="mybatis.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- TODO修改mybatis3中的mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.abc.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- TODO修改數據表進行生成操做 schema:至關於庫名; tableName:表名; domainObjectName:對應的Entity --> <table schema="db_name" tableName="table_name" domainObjectName="abEntity" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="true"> <!-- 若是設置爲true,生成的model類會直接使用column自己的名字,而不會再使用駝峯命名方法,好比BORN_DATE,生成的屬性名字就是BORN_DATE,而不會是bornDate --> <property name="useActualColumnNames" value="false"/> </table> </context> </generatorConfiguration>
第三步: 執行命令mysql
在maven -> plugins中找到mybais-generator:generate命令, 執行,就能夠生成數據表對應的entity、mapper.java、mapper.xml 文件了。
2、Spring Boot Maven Plugin
(官網介紹地址:https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins.html#build-tool-plugins-maven-plugin)<br> 首先看一下官方文檔的介紹:git
The Spring Boot Maven Plugin provides Spring Boot support in Maven, letting you package executable jar or war archives and run an application 「in-place」. To use it, you must use Maven 3.2 (or later).
就是說,Spring Boot Maven Plugin 在Maven中提供了Spring Boot支持,使得咱們可使用mvn package 命令,將咱們的程序 打包可執行jar或war包並直接運行應用程序,官方文檔中也給出咱們提示: 要使用它,必須使用Maven 3.2(或更高版本)。github
看一下如何引用,很簡單的,在 pom 文件中引入插件就能夠啦:spring
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.0.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins>
而後在 idea 中運行命令 mvn package,等執行完之後你會發現,target 包下多了一個 xxx.jar (xxx 就是你項目的項目名啦)的 jar 包 。<br> 通常的maven項目的打包命令,不會把依賴的jar包也打包進去的,只是會放在jar包的同目錄下,可以引用就能夠了, 可是spring-boot-maven-plugin插件,會將依賴的jar包所有打包進去,放在lib目錄下。sql
另外,還提供了一些其餘的<goals>支持:
run:運行Spring Boot應用程序。 repackage:將jar / war從新打包爲可執行文件。(通常咱們項目中都用這個) start和stop:來管理Spring Boot應用程序的生命週期(即用於集成測試)。 build-info:生成供執行器使用的構建信息。
3、maven-resources-plugin
官網地址:http://maven.apache.org/plugins/maven-resources-plugin/docker
官網介紹:數據庫
- Resources插件負責處理項目資源文件並拷貝到輸出目錄。Maven將main resources和test resources分開, 通常main resources關聯main source code,而test resources關聯test source code。 所以,咱們能夠將main resources和test resources分離。 從2.3版開始,此插件使用Maven Filtering 共享組件來篩選資源。
- Resources插件經過<goal></goal>標籤輸出文件複製到指定目錄,其中<goal></goal>有三個可選項:
- 1.resources:resources,拷貝main resources到main output directory。默認狀況下它綁定了process-resources生命週期階段。
- 2.resources:testResources,拷貝test resources到test output directory。它綁定了process-test-resources生命週期階段,當執行surefire:test插件目標前就會執行此階段。
- 3.resources:copy-resources,手動拷貝資源到輸出目錄,所以要配置要複製的資源,並指定outputDirectory。
前兩種比較簡單,就不貼代碼了,給出第三種手動拷貝資源的官方示例:apache
<build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>copy-resources</id> <!-- here the phase you need --> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/extra-resources</outputDirectory> <resources> <resource> <directory>src/non-packaged-resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> ... </build>
其中<phase>validate</phase>
指出在項目 validate 階段拷貝資源文件,<outputDirectory>
標籤指出資源文件拷貝到哪裏。
默認狀況下,Maven會從項目的src/main/resources目錄下查找資源。若是你的資源不在此目錄下,能夠用<resources>標籤指定:
<resources> <resource> <directory>src/my-resources</directory> </resource> </resources>
此外,能夠經過<resource>標籤來添加多個資源目錄:
<resources> <resource> <directory>resource1</directory> </resource> <resource> <directory>resource2</directory> </resource> <resource> <directory>resource3</directory> </resource> </resources>
4、docker-maven-plugin
官方文檔:https://github.com/spotify/docker-maven-plugin#bind-docker-commands-to-maven-phases
做用:
咱們可使用此插件從咱們的Maven項目中構建Docker映像。 例如,在項目的構建過程輸出運行該服務的Docker映像。
配置:
配置咱們的鏡像有兩種方式,<br> 第一種: 直接在pom中指定要添加到映像中的base image, entry point, cmd, maintainer 和 files ,而無需單獨的Dockerfile。
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <configuration> <!-- 注意imageName必定要是符合正則[a-z0-9-_.]的,不然構建不會成功 --> <!-- 詳見:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed--> <imageName>example</imageName> <baseImage>java:openjdk-8-jdk-alpine</baseImage> <entryPoint>["java", "-Dspring.profiles.active=${spring.profiles.active}", "-Duser.timezone=Asia/Shanghai", "-jar", "/${project.build.finalName}.jar"] </entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
第二種: 若是使用 VOLUME 或其餘 Dockerfile 中的命令的時候,須要使用該種方式,建立一個 Dockerfile,並在須要在 POM 中配置 dockerDirectory 來指定路徑。
<build> <plugins> ... <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>VERSION GOES HERE</version> <configuration> <imageName>example</imageName> <dockerDirectory>docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> ... </plugins> </build>
總結:
一個用於構建和推送Docker映像的Maven插件。使用Maven 插件構建Docker 鏡像,在<configuration></configuration> 中配置生成鏡像的信息,以及生成鏡像的時機, 便可在指定的maven生命週期內生成鏡像,搭配jenkins使用效果更佳。
5、maven-assembly-plugin
官方文檔:http://maven.apache.org/plugins/maven-assembly-plugin/
官方介紹:
Assembly 插件的主要做用是,容許用戶將項目輸出與它的依賴項、模塊、站點文檔、和其餘文件一塊兒組裝成一個可分發的歸檔文件。
簡單說來也是個打包組件,定製化的打包項目,指定打包哪些文件,指定輸出地址,打包階段,指定輸出的包類型
貼出一個官方示例吧:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.1</version> <dependencies> <dependency> <groupId>your.group.id</groupId> <artifactId>my-assembly-descriptor</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <!-- This is where we use our shared assembly descriptor --> <descriptorRefs> <descriptorRef>myassembly</descriptorRef> </descriptorRefs> </configuration> </execution> </executions> </plugin>