maven常用插件记录

不管你用什么插件,创建项目后pom文件中首先引入以下配置项

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

首先是默认的编译插件maven-compiler-plugin和打包插件maven-jar-plugin,一般不需要进行配置。

1、maven-compiler-plugin

1)编译时指定encoding,否则中文通不过,configuration可以只配置encoding

2)执行mvn install时编译报错,因为编译器的版本太老了,通过这个插件修改版本,可以只配置source和target

<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>
        <encoding>UTF-8</encoding>
        <compilerArgs>
            <arg>-extdirs</arg>
            <arg>${project.basedir}/src/main/webapp/WEB-INF/lib</arg>
        </compilerArgs>
    </configuration>
</plugin>

2、maven-jar-plugin

默认的打包插件,指定主程序的入口,将依赖的jar包一同打出

<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <classesDirectory>target/classes/</classesDirectory>
        <archive>
            <manifest>
                <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                <useUniqueVersions>false</useUniqueVersions>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
            <manifestEntries>
                <Class-Path>.</Class-Path>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

3、maven-dependency-plugin

自动拷jar包到target目录,我们实际部署时只有java环境,没有源码和IDE,所以一般使用这个插件把引用的库统一打包到指定目录下,比如lib文件夹。部署war包时,需要将项目依赖的jar包,也打到war包中,这时就会用到该插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <type>jar</type>
                <includeTypes>jar</includeTypes>
                <useUniqueVersions>false</useUniqueVersions>
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

4、jetty-maven-plugin

mvn jetty:run 启动;Ctrl +C停止服务或者使用mvn jetty:stop

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.6.v20170531</version>
    <configuration>
        <!-- jetty 默认使用的端口是 8080 -->
        <httpConnector>
            <port>8081</port>
            <idleTimeout>60000</idleTimeout>
        </httpConnector>
        <!--热部署方式:默认automatic自动部署,设置为manual,每次修改完成后按回车键才会重新部署-->
        <reload>manual</reload>
        <!--web上下文,最常用的是 contextPath-->
        <webApp>
            <contextPath>/</contextPath>
        </webApp>
        <!--访问日志-->
        <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
            <filename>target/access-yyyy_mm_dd.log.log</filename>
            <filenameDateFormat>yyyy_MM_dd</filenameDateFormat>
            <logDateFormat>yyyy-MM-dd HH:mm:ss</logDateFormat>
            <logTimeZone>GMT+8:00</logTimeZone><!--时区:东八区北京时间-->
            <logServer>true</logServer>
            <retainDays>90</retainDays>
            <append>true</append>
            <extended>false</extended>
        </requestLog>
        <!--以下配置可以暂时不加,最好设置为false,不了解-->
        <systemProperties>
            <systemProperty>
                <name>productionMode</name>
                <value>false</value>
            </systemProperty>
        </systemProperties>
    </configuration>
</plugin>

jetty插件需要引入一个依赖插件,否则报错:

 <dependency>
	<groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

5、maven-war-plugin

打war包时,配置排除某些web资源文件

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

6、maven-assembly-plugin

支持各种打包文件格式,包括zip、tar.gz等,通过一个打包描述文件如src/main/assembly.xml,来选择具体打包哪些文件集合、依赖、模块、以及本地仓库文件,每个文件的具体打包路径可以自由控制。

maven-assembly-plugin总结

1) 使用方式如下,首先安装plugin,配置assembly.xml文件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2) 配置assembly.xml文件

<assembly>
    <id>bin</id>
    <formats>
        <format>zip</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>README.md</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/scripts</directory>
            <outputDirectory>/bin</outputDirectory>
            <includes>
                <include>run.sh</include>
                <include>run.bat</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

以上代码,执行mvn clean install生成zip包,解压包含两个文件夹:bin、lib以及README.md文件

7、mybatisplus-maven-plugin

mybatisplus生成代码已经很方便了,最近又发现提供了这个插件,首先引入配置

<plugin>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatisplus-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <!-- 输出目录(默认java.io.tmpdir) -->
        <outputDir>e:\cache</outputDir>
        <!-- 是否覆盖同名文件(默认false) -->
        <fileOverride>true</fileOverride>
        <!-- mapper.xml 中添加二级缓存配置(默认true) -->
        <enableCache>true</enableCache>
        <!-- 开发者名称 -->
        <author>Yanghu</author>
        <!-- 是否开启 ActiveRecord 模式(默认true) -->
		<activeRecord>false</activeRecord>
        <!-- 数据源配置,( **必配** ) -->
        <dataSource>
            <driverName>com.mysql.jdbc.Driver</driverName>
            <url>jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&amp;useSSL=false</url>
            <username>root</username>
            <password>123456</password>
        </dataSource>
        <strategy>
			<!-- 字段生成策略,四种类型,从名称就能看出来含义: 
				nochange(默认), 
				underline_to_camel,(下划线转驼峰) 
				remove_prefix,(去除第一个下划线的前部分,后面保持不变) 
				remove_prefix_and_camel(去除第一个下划线的前部分,后面转驼峰) -->
			<naming>remove_prefix_and_camel</naming>
			<!-- 表前缀 -->
			<tablePrefix>bmd_</tablePrefix>
            <!--Entity中的ID生成策略(默认 id_worker)-->
            <idGenType>uuid</idGenType>
            <!--自定义超类-->
            <!--<superServiceClass>com.baomidou.base.BaseService</superServiceClass>-->
            <!-- 要包含的表 与exclude 二选一配置-->
            <!--<include>-->
                <!--<property>sec_user</property>-->
                <!--<property>table1</property>-->
            <!--</include>-->
            <!-- 要排除的表 -->
            <!--<exclude>-->
                <!--<property>schema_version</property>-->
            <!--</exclude>-->
        </strategy>
        <packageInfo>
            <!-- 父级包名称,如果不写,下面的service等就需要写全包名(默认com.baomidou) -->
            <parent>com.baomidou</parent>
            <!--service包名(默认service)-->
            <service>service</service>
            <!--serviceImpl包名(默认service.impl)-->
            <serviceImpl>service.impl</serviceImpl>
            <!--entity包名(默认entity)-->
            <entity>entity</entity>
            <!--mapper包名(默认mapper)-->
            <mapper>mapper</mapper>
            <!--xml包名(默认mapper.xml)-->
            <xml>mapper.xml</xml>
        </packageInfo>
        <template>
        	<!-- 定义controller模板的路径 -->
			<!--<controller>/template/controller1.java.vm</controller>-->
		</template>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
    </dependencies>
</plugin>

执行命令:

mvn com.baomidou:mybatisplus-maven-plugin:1.0:code
#也可在settings.xml中添加以下配置,然后执行mvn mp:code
<pluginGroups>
	<pluginGroup>com.baomidou</pluginGroup>
</pluginGroups>

美中不足:1、会暴露数据库配置,2、生成的实体不能引入lombok,3、会自动添加一个字段id,生成策略默认为uuid,如果想用自增,需要将这个配置改成auto

8、maven-surefire-plugin跳过单元测试

<!--跳过单元测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值