自定義maven archetype,上傳到nexus,并使用nexus遠程的archetype創(chuàng)建項目

需要自定義骨架的需求

有的時候吭历,我們項目中會有很多公共的依賴、公共的代碼擂橘、公共的配置文件
但是我們又不希望創(chuàng)建一個新項目之后重新從老項目拷貝晌区。所以我們能使用老的項目作為新建項目的maven archetype骨架。

如何自定義骨架

首先創(chuàng)建一個maven項目,這個項目是作為archetype骨架的項目


創(chuàng)建骨架項目.png

要想生成骨架朗若,我們的maven要加一個插件pom.xml的build節(jié)點下加入以下代碼

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-archetype-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
        <extensions>
            <extension>
                <groupId>org.apache.maven.archetype</groupId>
                <artifactId>archetype-packaging</artifactId>
                <version>3.0.1</version>
            </extension>
        </extensions>

構建archetype

在項目pom.xml同級的目錄下運行以下命令

mvn clean archetype:create-from-project

注意:一定要clean恼五,不然使用骨架會把骨架的java項目結構也加到新項目中

看到build success后我們會發(fā)現(xiàn)生成了target文件夾,結構如下:

構建項目骨架1.png

target目錄下會有generated-sources目錄哭懈,generated-sources/archetype/src/main.resource/META_INF.maven下會有一個archetype-metadata.xml文件灾馒,這里是可以配置那些資源會被包含在骨架中,那些不會包含在骨架中遣总。

安裝骨架到本地倉庫

到generated-sources/archetype 目錄下安裝骨架到本地

cd target/generated-sources/archetype/
mvn clean install

構建成功后會輸出一下信息:

[INFO] Installing E:\SpringIO\achetype-test\target\generated-sources\archetype\pom.xml to E:\MavenRepository\org\example\achetype-test-archetype\1.0-SNAPSHOT\achetype-test-archetype-1.0-SNAPSHOT.pom

在本地按照路徑找到achetype-test-archetype-1.0-SNAPSHOT.pom 打開睬罗,看看里面的信息:

<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>org.example</groupId>
  <artifactId>achetype-test-archetype</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>maven-archetype</packaging>

  <name>achetype-test-archetype</name>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>2.2</version>
      </extension>
    </extensions>

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>2.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

里面標識了jar包的類型是maven-archetype

在本地倉庫生成坐標信息

執(zhí)行一下命令:

mvn archetype:crawl

在指定的Maven庫中查找可以的模板,并更新模板目錄旭斥,這個時候在本地的maven倉庫中就會生成一個archetype-catalog.xml文件容达,里面有固件的坐標信息。
打開:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>org.example</groupId>
      <artifactId>achetype-test-archetype</artifactId>
      <version>1.0-SNAPSHOT</version>
      <description>achetype-test</description>
    </archetype>
  </archetypes>
</archetype-catalog>

根據(jù)模板坐標信息創(chuàng)建新項目

首先創(chuàng)建maven項目


通過骨架創(chuàng)建新項目1.png

然后把骨架的坐標信息輸入


通過骨架創(chuàng)建新項目2.png

輸入的坐標信息是archetype-catalog.xml里achetype-test-archetype骨架的坐標信息垂券,輸入完確認之后下面的archetype面板會出現(xiàn)以下骨架:這個信息會緩存在:
C:\Users/[用戶]\AppData\Local\JetBrains\IntelliJIdea2020.x.x\Maven\Indices/UserArchetypes.xml下
如果想要清楚花盐,打開,把你添加的骨架坐標信息刪掉再清楚IDEA緩存重啟就好


通過骨架創(chuàng)建新項目3.png

選擇然后下一步菇爪,輸入完項目的groupId和artifactId之后項目就創(chuàng)建成功了
創(chuàng)建的項目會有骨架項目的java代碼算芯、依賴配置、以及資源文件


通過骨架創(chuàng)建新項目4.png

上傳骨架到nexus

在項目target/generated-sources/archetype/pom.xml 中加入以下配置,指定nexus地址娄帖。

<distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Micaicms Releases</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Micaicms Releases</name>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
</distributionManagement>

然后在target/generated-sources/archetype運行

mvn deploy

這樣就能把骨架上傳到nexus倉庫中了(這個nexus只是筆者自己搭建的本地nexus服務)
注意:上傳nexus私服需要密碼也祠。

使用遠程nexus倉庫的archetype創(chuàng)建項目

使用遠程nexus倉庫的archetype創(chuàng)建項目的時候,必須在自己的maven conf 下settings.xml加入以下配置:

因為Maven 3改變了原型存儲庫的集成方式近速。-DarchetypeRepository參數(shù)不再存在。相反堪旧,需要將archteype存儲庫添加到settings.xml

<profile>
      <!-- the profile id is arbitrary 這個id是任意填的--> 
      <id>my_archetype</id>
      <repositories>
        <repository>
          <!-- the repository id has to be named: archetype 這repository Id必須是archetype -->
          <id>archetype</id>
          <name>my archetypes</name>
          <url>http://127.0.0.1:8081/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
            <checksumPolicy>fail</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <checksumPolicy>warn</checksumPolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>

  <activeProfiles>
    <activeProfile>my_archetype</activeProfile> <!-- 這個id是上面的profile id -->
  </activeProfiles>

注意:以上配置一定要加削葱!以上配置一定要加!淳梦!以上配置一定要加N鲈摇!爆袍!上面的配置是為了告訴maven archetype可以從哪里拿首繁,如果沒有上面的配置,使用遠程nexus 的archetype的時候會報The desired archetype does not exist

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陨囊,一起剝皮案震驚了整個濱河市弦疮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜘醋,老刑警劉巖胁塞,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡啸罢,警方通過查閱死者的電腦和手機编检,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扰才,“玉大人允懂,你說我怎么就攤上這事●孟唬” “怎么了蕾总?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長舵揭。 經(jīng)常有香客問我谤专,道長,這世上最難降的妖魔是什么午绳? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任置侍,我火速辦了婚禮,結果婚禮上拦焚,老公的妹妹穿的比我還像新娘蜡坊。我一直安慰自己,他們只是感情好赎败,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布秕衙。 她就那樣靜靜地躺著,像睡著了一般僵刮。 火紅的嫁衣襯著肌膚如雪据忘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天搞糕,我揣著相機與錄音勇吊,去河邊找鬼。 笑死窍仰,一個胖子當著我的面吹牛汉规,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驹吮,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼针史,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碟狞?” 一聲冷哼從身側響起啄枕,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎篷就,沒想到半個月后射亏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近忙,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年智润,在試婚紗的時候發(fā)現(xiàn)自己被綠了及舍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡窟绷,死狀恐怖锯玛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兼蜈,我是刑警寧澤攘残,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站为狸,受9級特大地震影響歼郭,放射性物質發(fā)生泄漏。R本人自食惡果不足惜辐棒,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一病曾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漾根,春花似錦泰涂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寄疏,卻和暖如春是牢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陕截。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工妖泄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艘策。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像渊季,于是被迫代替她去往敵國和親朋蔫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361