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类似,子模块也可以选择性继承这里声明的插件。

posted @ 2019-02-02 13:12  西班牙乞丐  阅读(3365)  评论(0编辑  收藏  举报