Maven小运用
程序员文章站
2022-03-08 17:54:10
...
前言
在编译项目后部署项目前总需要做一些额外的动作,例如重置测试数据库、更换对应环境的配置文件等。其实可以利用Maven在编译项目时替我们完成这些操作
Maven
在Maven
中有三种执行单元:
- 生命周期
- 阶段
- 目标
单元之间关系:
简单概括一下:
-
生命周期包含多个阶段,执行生命周期将按顺序执行所包含的所有阶段
mvn clean # clean周期
-
阶段包含多个目标,执行阶段将执行所包含的所有目标。执行阶段将导致生命周期中给该阶段前的所有阶段执行
mvn install # default周期的install阶段
-
目标是具体的任务(例:重置数据库),一个目标可绑定多个阶段。如果目标未绑定阶段,则只能通过
mvn
参数的形式执行mvn dependency:copy-dependencies # 插件:目标
应用
通过前面的分析知道,我们应该将希望Maven
替我们完成的操作放在目标中,目标如何实现——插件
下面的代码你应该不会陌生,它被用于指定项目的JAVA
版本
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
一般我们只需要找对应的插件即可完成想要的操作,可在Maven官方插件列表中查找
举个实际栗子
用于测试的项目A每次编译完后需要部署到服务器,然后重置数据库再进行测试,重置数据库是手动执行sql
文件,费时费力,又不想自己写脚本,希望有简单的解决办法
- 到Maven官方插件列表中查找对应插件
- 查看用法
-
添加到
pom
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sql-maven-plugin</artifactId> <dependencies> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3.0</version> </dependency> </dependencies> <configuration> <driver>oracle.jdbc.OracleDriver</driver> <url>database_url</url> <username>username</username> <password>password</password> <onError>continue</onError> </configuration> <executions> <execution> <id>reset_data</id> <phase>initialize</phase> <goals> <goal>execute</goal> </goals> <configuration> <srcFiles> <srcFile>PATH/reset_data.sql</srcFile> </srcFiles> </configuration> </execution> </executions> </plugin>
然后,每次编译项目的时候Maven
都会执行reset_data.sql
文件重置数据库
最后,如果没有想要的插件怎么办?编写自己的Maven插件