maven的settings.xml配置
<server>
<id>releases-id</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshot-id</id>
<username>admin</username>
<password>admin123</password>
</server>
-
id
自定義
id
,表示一個server
配置塊,要保證唯一性,與distributionManagement
中的repository
元素的id
匹配 -
username/password
服務器認證需要的登錄名和密碼,可由私服的
Role
和User
等控制權限 -
privateKey/passphrase
(可選)兩個元素指定了一個私鑰的路徑(默認是
/home/hudson/.ssh/id_dsa
)和一個密語。 -
filePermissions/directoryPermissions
(可選)權限對應了
linux
文件系統的權限,瞭解即可,如777.
項目pom文件配置
<scm>
<connection>
scm:svn:http://xxx/svn/code/xxx/${project.artifactId}/trunk
</connection>
<developerConnection>
scm:svn:http://xxx/svn/code/xxx/${project.artifactId}/trunk
</developerConnection>
<url>
http://xxx/svn/code/xxx/${project.artifactId}/trunk
</url>
</scm>
<distributionManagement>
<repository>
<id>releases-id</id>
<name>Release Repository</name>
<url>http://192.168.1.11:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshot-id</id>
<name>Snapshot Repository</name>
<url>http://192.168.1.11:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
-
distributionManagement
配置發佈到私服的分發倉庫
-
repository
配置最終版本
releases
的倉庫,deploy
時將項目的最終版本(x.x.x
)發佈到releases
倉庫 -
snapshotRepository
配置快照版本
snapshot
的倉庫,deploy
時將項目的快照版本(x.x.x-SNAPSHOT
)發佈到snapshots
倉庫
注意
-
distributionManagement
中同時配置了releases
和snapshot
兩個倉庫,但是每次只會有一個生效!因爲你pom
文件中的version
要麼版本號帶有-SNAPSHOT
,要麼只有版本號的0.0.0
,因此maven
在deploy
的時候會根據version
後綴來匹配發布到哪個倉庫中。 -
distributionManagement
只配置了releases
倉庫,但是pom
的version
版本號帶有-SNAPSHOT
,此時你deploy
的話,會報異常,如下異常 -
在
nexus
私服,選中Repositories
,選中Releases
的倉庫,在Configuration
的Access Settings
有Deployment Policy
配置,默認是Disable Redeploy
,表示一個版本只允許上傳一次,不允許覆蓋,否則會報異常如下異常 -
異常
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project http-push: Failed to deploy artifacts: Could not transfer artifact com.p7.framework:http-push:jar:2.0.0 from/to releases (http://192.168.1.11:8081/nexus/content/repositories/releases): Failed to transfer file: http://192.168.1.11:8081/nexus/content/repositories/releases/com/p7/framework /http-push/2.0.0/http-push-2.0.0.jar. Return code is: 400, ReasonPhrase: Bad Request. -> [Help 1]