mvn install 會將項目生成的構件安裝到本地Maven倉庫,
mvn deploy 用來將項目生成的構件分發到遠程Maven倉庫。本地Maven倉庫的構件只能供當前用戶使用,在分發到遠程Maven倉庫以後,全部能訪問該倉庫的用戶都能使用你的構件。
咱們須要配置POM的distributionManagement來指定Maven分發構件的位置,以下:
- <project>
- ...
- <distributionManagement>
- <repository>
- <id>nexus-releases</id>
- <name>Nexus Release Repository</name>
- <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>
- </repository>
- <snapshotRepository>
- <id>nexus-snapshots</id>
- <name>Nexus Snapshot Repository</name>
- <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
- ...
- </project>
Maven區別對待release版本的構件和snapshot版本的構件,snapshot爲開發過程當中的版本,實時,但不穩定,release版本則比較穩定。Maven會根據你項目的版原本判斷將構件分發到哪一個倉庫。
通常來講,分發構件到遠程倉庫須要認證,若是你沒有配置任何認證信息,你每每會獲得401錯誤。這個時候,以下在settings.xml中配置認證信息:
- <settings>
- ...
- <servers>
- <server>
- <id>nexus-releases</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- <server>
- <id>nexus-snapshots</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- </servers>
- ...
- </settings>
須要注意的是,settings.xml中server元素下id的值必須與POM中repository或snapshotRepository下id的值徹底一致。將認證信息放到settings下而非POM中,是由於POM每每是它人可見的,而settings.xml是本地的。