1. 程式人生 > >maven發布jar包到nexus

maven發布jar包到nexus

復用 配置 jar 最新 settings 靈活性 完成 自動 use

在編碼過程中,有些通用的代碼模塊,有時候我們不想通過復制拷貝來粗暴地復用,因為這樣不僅體現不了變化,也不利於統一管理。這裏我們使用maven deploy的方式,將通用的模塊打成jar包,發布到nexus,讓其他的項目來引用,以更簡潔高效的方式來實現復用和管理。

第一:maven的settings.xml文件中設置<server>標簽

    <server>
      <id>release</id>
      <username>admin</username>
      <password>admin123</
password> </server> <server> <id>snapshot</id> <username>admin</username> <password>admin123</password> </server>

此處設置的用戶名和密碼都是nexus的登陸配置

第二:在項目的pom.xml文件中設置

<distributionManagement>
    <repository>
        <
id>release</id> <url>http://192.168.1.123:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshot</id> <url>http://192.168.1.123:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository
> </distributionManagement>

在此,url都是nexus相應倉庫的鏈接地址,這一步做完之後,已經完成了發布所需要的基本配置。【試試命令:mvn deploy

註意:<server>中的<id>要和<repository>、<snapshotRepository>的<id>一致,maven在發布時,會根據此id來查找相應的用戶名密碼進行登錄驗證並上傳文件。

第三:發布的靈活性配置

maven會判斷版本後面是否帶了-SNAPSHOT,如果帶了就發布到snapshots倉庫,否則發布到release倉庫。這裏我們可以在pom.xml文件中,設置



<groupId>com.test</groupId>
<artifactId>my-test</artifactId>
<packaging>jar</packaging>
<version>${project.release.version}</version>

<properties>
    <java.version>1.8</java.version>
    <project.release.version>1.0-SNAPSHOT</project.release.version>
</properties>

<profiles>
    <profile>
        <id>product</id>
        <properties>
            <project.release.version>1.0</project.release.version>
        </properties>
    </profile>
</profiles>

說明:通過占位符${project.release.version}來控制需要發布的版本,用命令mvn deploy -P product,發布my-test的1.0版本到releases庫。如果使用命令mvn deploy,則默認使用 1.0-SNAPSHOT版本號,將發布my-test的1.0-SNAPSHOT版本到snapshots庫。

第四:發布時遇到的一些問題

1.部署到snapshot倉庫時,jar包會帶上時間戳,這沒關系,maven會自動取相應版本最新的jar包;

2.Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project my-test: Failed to deploy artifacts: Could not transfer artifact...from/to release...

部署到release倉庫時,相同版本的jar包不能提交。解決辦法是修改一下版本號,再提交即可。

3.持續更新...

maven發布jar包到nexus