Maven distributionManagement 分發構件至遠端倉庫
阿新 • • 發佈:2018-12-09
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是本地的。