【運維技術】Maven + Gogs + Nexus 實現版本管理 + 代碼模塊開發管理

Gogs:可以實現fork + 代碼提交 + 代碼框架java

Nexus:進行jar包的版本管理,私服下載jar包共享jar包git

Maven:在客戶端進行模塊管理和批量操做spring

1. 本地maven倉庫配置配置settings.xml私服地址

settings.xmlapache

<project>
  <!--  用戶名密碼 -->
  <servers>
    <server>    
       <id>nexus-releases</id>
       <username>admin</username>
       <password>xxxxxxx</password>    
    </server>
    <server>    
       <id>nexus-snapshots</id>    
       <username>deployment</username>    
       <password>xxxxxxx</password>    
    </server>
  </servers>
  <!-- 鏡像倉庫配置 -->
  <mirrors>
      <mirror>
      <id>repo-nexus</id>
      <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url>
      <mirrorOf>central</mirrorOf>
     </mirror>
  </mirrors>
    <!-- 私服配置 -->
    <profile> 
        <id>repo</id>  
        <activation> 
            <activeByDefault>true</activeByDefault> 
        </activation>  
        <repositories> 
            <repository> 
            <id>repo</id>  
            <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>  
            <releases> 
                <enabled>false</enabled> 
            </releases>  
            <snapshots> 
                <enabled>true</enabled> 
            </snapshots> 
            </repository> 
        </repositories>  
        <pluginRepositories> 
            <pluginRepository> 
            <id>repo</id>  
            <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>  
            <releases> 
                <enabled>false</enabled> 
            </releases>  
            <snapshots> 
                <enabled>true</enabled> 
            </snapshots> 
            </pluginRepository> 
        </pluginRepositories> 
        </profile>
    </profiles>
</project>

2. 建立maven項目,修改配置scm、maven-release-plungin, 推送到倉庫中

pom.xml緩存

<project>
    <!-- 構建管理配置私服 -->
    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Release FRepository</name>
            <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Shapshots Repository</name>
            <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <!-- git的版本管理控制 -->
    <scm>
        <connection>scm:git:http://127.0.0.1:3062/wulonghuai/maven_module.git</connection>
        <developerConnection>scm:git:http://127.0.0.1:3062/wulonghuai/maven_module.git</developerConnection>
        <url>http://127.0.0.1:3062/wulonghuai/maven_module/src/master</url>
    </scm>

    <!--  插件配置 -->
    <build>
        <plugins>
            <!-- maven release 發佈插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <tagNameFormat>v@{project.version}</tagNameFormat>
                    <username>username</username>
                    <password>password</password>
                    <branchBase>master</branchBase>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3. 使用命令進行快照版本發佈

在mave項目目錄下,對應配置的pom.xml文件下面springboot

clean package -U deploy -Dmaven.test.skip=true
# BUILD SUCCESS即爲上傳成功

4. 使用命令進行鏡像版本發佈

第一步:release:prepare:打包前的準備工做服務器

  1. 輸入對應的release須要打包的版本嘻嘻,若是不輸入有默認的內容
  2. 將須要記錄和準備的內容緩存到pom.xml目錄下的release.properties文件中
  3. 在本地和遠程倉庫的git中打上對應版本的tag
    先確認本地代碼所有提交了,不然會失敗。執行prepare的時候會執行單元測試,失敗也會回滾
# 執行發佈準備命令
release:prepare
# 確認maven倉庫的release版本號,回車爲默認值
What is the release version for "mavenmodule"? (com.wlh:mavenmodule) 1.3: : 
# 確認scm中的倉庫的tag標籤版本號,回車爲默認值
What is SCM release tag or label for "mavenmodule"? (com.wlh:mavenmodule) v1.3: : 
# 確認下一個開發版本的快照版本編號
What is the new development version for "mavenmodule"? (com.wlh:mavenmodule) 1.4-SNAPSHOT: :

後悔藥:release:rollback
在順北階段發生錯誤的時候,就須要這個命令了,這個命令執行會去作如下這些事情框架

  1. 刪除線上git庫tag可是本地沒有被刪除,須要手動使用git -d xxx 進行刪除,不然下次準備會失敗
  2. 刪除以前緩存在pom.xml統一目錄下的配置
# 執行回滾命令
release:rollback
# 會降本的的分支進行刪除,可是服務器上的分支不會刪除,須要手動經過工具進行刪除命令
release:prepare

最後一步:release:perform
若是確認無誤了之後,就能夠執行perform命令了maven

  1. 驗證代碼合法性
  2. 將你以前的1.0-SNAPSHOT改成1.1-SNAPSHOT
  3. 將1.0版本deploy至scm配置的nexus release庫中
  4. 將代碼source。jar版本 javacode。jar打包上傳至nexus庫
# 將源代碼上傳到服務器了
release:perform

題外話

去spring的框架上面看了下,springboot仍是用maven進行管理依賴,而spring框架就是用gradle。
後來看了下dubbo也是用maven插件的方式進行版本發佈,因此看來路子是沒有錯誤的,哈哈哈。工具


華爲雲和Sonatype聯合發佈的中國官方Maven中央倉庫

【maven實戰】42-使用maven-release-plugin自動化版本發佈

插件安裝相關文章

maven最佳實踐:版本管理

官方插件地址:Maven Release Plugin

Nexus入門指南

相關文章
相關標籤/搜索