1. 程式人生 > >pom.xml文件設置

pom.xml文件設置

div bsp 無法使用 model account compiler nag snapshot deploy

一個相對完整的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類似,子模塊也可以選擇性繼承這裏聲明的插件。

pom.xml文件設置