pom.xml文件设置
一个相对完整的maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--pom版本--> <modelVersion>4.0.0</modelVersion> <!--项目坐标--> <groupId>cn.itcast.account.mvnbook</groupId> <artifactId>account</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <!--聚合模块--> <modules> <module>accounte-mail</module> <module>account-api</module> </modules> <!--参数管理--> <properties> <spring.version>5.1.4.RELEASE</spring.version> <mybatis.version>3.5.0</mybatis.version> <mybatis-spring.version>2.0.0</mybatis-spring.version> <mail.version>1.4.7</mail.version> <greenmail.version>1.5.9</greenmail.version> <junit.version>4.12</junit.version> <maven-compile-plugin.version>3.8.0</maven-compile-plugin.version> <jdk.version>1.8</jdk.version> </properties> <!--仓库管理,即去哪个远程仓库下载依赖--> <repositories> <!--正式版本--> <repository> <id>releases</id> <url>http://</url> </repository> <!--快照版本--> <repository> <id>snapshots</id> <url>http://</url> </repository> </repositories> <!--部署管理,即将项目作为构件部署到哪个远程仓库--> <distributionManagement> <!--正式版本--> <repository> <id>releases</id> <url>http://</url> </repository> <!--快照版本--> <snapshotRepository> <id>snapshots</id> <url>http://</url> </snapshotRepository> </distributionManagement> <!--依赖管理,子模块可以选择性继承--> <dependencyManagement> <dependencies> <!--spring starts--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!--spring ends--> <!--mybatis starts--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> <!--mybatis ends--> <!--mail starts--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>${mail.version}</version> </dependency> <dependency> <groupId>com.icegreen</groupId> <artifactId>greenmail</artifactId> <version>${greenmail.version}</version> <scope>test</scope> </dependency> <!--mail ends--> <!--test starts--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!--test ends--> </dependencies> </dependencyManagement> <!--项目构建管理--> <build> <!--插件管理,子模块可以选择性继承--> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compile-plugin.version}</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
其中,repositories标签的作用是设置远程仓库。Maven项目需要构件(例如jar包)时,会首先去本地仓库中查找。如果本地仓库中不存在,会去远程仓库下载。如果这里不配置repositories,由于所有的pom文件都继承自超级POM,会默认去中央仓库中下载,效率比较低。为了提高效率,在repositories标签中设置私服,当本地仓库中不存在某个构件时,Maven会首先从私服中获取。如果私服中依然不存在,再从外部的远程仓库(例如中央仓库)下载,缓存在私服,供以后局域网用户使用。注意,如果私服设置了权限验证,需要在Maven的setting.xml文件中设置权限校验的参数。
<servers>
<!--id必须与pom文件中的repositories标签中设置的一致--> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
modules标签的作用是声明要聚合的模块,在该目录了下执行mvn命令,会一次性执行这里声明的所有被聚合的模块。需要注意的是其子标签module的值应该是目录名称,但通常与被聚合的模块的artifactId一致。
distributionManagement标签的作用是设置项目部署位置,即maven clean deploy命令将项目以构件(例如jar、war、pom等)的形式部署到哪个私服。如果不设置,maven clean deploy命令将无法使用,即无法将项目推送到远程仓库。
dependencyManagement标签的作用是声明项目用到的所有依赖,统一管理依赖的版本等。子模块可以选择性继承这里声明的依赖,只需要设置groupId和artifactId即可,version和scope属性会继承父模块声明的。
pluginManagement标签跟dependencyManagement类似,子模块也可以选择性继承这里声明的插件。