1. 程式人生 > >使用Maven搭建自己的專案骨架archetype(六)

使用Maven搭建自己的專案骨架archetype(六)

六、上傳到nexus伺服器並且使用idea生成專案

本節中,大部分是配置,解釋不會特別詳細,如果有看不懂的,查Maven或者nexus的配置說明即可。

這裡,我們還是使用之前建立的 simple_archetype專案,將它部署到自己搭建的nexus伺服器上。如果不知道如何搭建nexus伺服器,請自行查詢官網教程。

1. 指定nexus伺服器中倉庫的地址

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>demo.keyy</groupId> <artifactId>simple_archetype</artifactId> <version>1.0</version> <packaging>maven-archetype</packaging
>
<distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Release Repository</name> <url>http://localhost:8081/repository/sqsd_release/</url> </repository> <snapshotRepository>
<id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://localhost:8081/repository/sqsd_public/</url> </snapshotRepository> </distributionManagement> <build> <extensions> <extension> <groupId>org.apache.maven.archetype</groupId> <artifactId>archetype-packaging</artifactId> <version>3.0.1</version> </extension> </extensions> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>3.0.1</version> </plugin> </plugins> </pluginManagement> </build> </project>

>>解釋

  1. <packaging>中的配置,以及build下新增的這兩部分(extesions 和 pluginManagement) 是由於我部署到nexus上,nexus(當前使用的版本3.x)貌似無法正常識別它是 archetype,所以在nexus的倉庫中建立 archetype-catalog.xml時不會識別。 這裡的配置是在stackoverflow上查到的別人的解決方案。
  2. distributionManagement中指定了上傳的nexus倉庫地址,如果此時的versoin是snapshot,則會部署到 <snapshotRepository>指定的地址,否則部署到<repository>的地址

2. 配置上傳時需要進行使用者驗證

在 ~.m2資料夾下的 settings.xml中,新增:

<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>

>>解釋

這裡配置了2個 server, 分別對應snapshot和release倉庫的驗證資訊, 主要注意的是 id的內容,必須和上面 <distributionManagement>裡面2個id相同。

3. 上傳到nexus倉庫

如果倉庫地址和使用者驗證都已經成功設定之後,下面進入 simple_archetype 這個骨架專案的根目錄,執行:

mvn deploy


這裡寫圖片描述
圖1. 執行deploy命令,上傳到nexus


這裡寫圖片描述
圖2. 執行成功

顯示 BUILD SUCCESS,就說明上傳成功了,此時可以進入到對應的nexus倉庫下,檢視是否骨架已經存在。


這裡寫圖片描述
圖3. 上傳nexus成功

4. 使用idea建立專案

剩下的就簡單了,首先要確定idea使用的Maven是我們自己的,不是它預設的; 並且確保它使用的 settings.xml 也是我們放入 ~.m2資料夾下的。


這裡寫圖片描述
圖4. 確認idea的Maven配置

然後再建立專案中,使用Maven,並且輸入我們剛才骨架的座標:


這裡寫圖片描述
圖5. 通過Maven建立專案


GAV
圖6. 輸入我們archetype骨架的專案GAV座標

最後,在archetype列表中找到我們剛才新增的archetype,一直點選Next就可以了。

最後注意的是,建立好後,一定要點選右下角提示的 Enable Auto Import 哦!

5. 將已有jar包新增到nexus

這裡只是普通的jar包,沒有測試過將archetype的jar包上傳後是否可用的情況。

在已有jar包的情況下,要新增到nexus某個倉庫中,執行以下命令:

mvn deploy:deploy-file -DgroupId="com.demo1" -DartifactId="ojdbc" -Dversion="6.0" -Dpackaging="jar" -Dfile="H:\IntelliJIdeaWorkSpace\ojdbc6.jar" -Durl="http://113.240.224.29:18087/repository/sqsd_3rdparty/" -DrepositoryId="nexus-3rdparty"
  • -DgroupId 是打算把這個jar包上傳到nexus後,歸屬到哪個groupId, 它和本身建立該jar包時的專案配置無關,完全按照個人喜好輸入。
  • -DartifactId 和groupId一樣,按照個人喜歡,給他起個名。
  • -Dversion 和上面2個一樣,按個人喜好起個版本號。
  • -Dpackaging=”jar” 指定包型別
  • -Dfile 指定上傳jar包在本地的位置
  • -Durl 指定要上傳到的nexus倉庫的url
  • -DrepositoryId 這個比較重要,它會根據你 ~.m2\settings.xml 中的 server配置,去尋找id相同的server,根據它的 使用者名稱和密碼來作為上傳jar包的驗證。

注意,指定每個引數的時候,值一定要用雙引號包起來,否則可能會出錯。

以上是使用Maven的一點學習經驗,如果有問題還請各位指出,謝謝。