通過(guò)maven將項(xiàng)目管理起來(lái)之后,拉取pom文件中的依賴(lài)項(xiàng)目。估計(jì)大部分小伙伴都想過(guò)這些文件是哪里來(lái)的,怎么來(lái)編譯呢。
微服務(wù)下的相互引用
相信接觸過(guò)微服務(wù)架構(gòu)的java開(kāi)發(fā)伙伴,都對(duì)依賴(lài)其他項(xiàng)目的用法比較熟悉。往往在一個(gè)微服務(wù)中,A服務(wù)被B服務(wù)依賴(lài),在B服務(wù)的pom文件中必然會(huì)有A服務(wù)的引用配置。

微服務(wù)下的deploy
在微服務(wù)框架下服務(wù)module較少的情況下,每次編譯直接全量編譯解決引用項(xiàng)目的問(wèn)題。但是,隨著項(xiàng)目的逐漸增大,項(xiàng)目開(kāi)發(fā)人員的增加,不可避免的會(huì)出現(xiàn):代碼提交不及時(shí),接口在不知情的情況下被別人改了等其他各種情況。
對(duì)此,將我們微服務(wù)中引用的接口、類(lèi)提取為一個(gè)可單獨(dú)引用模塊是必不可少的一個(gè)步驟。在實(shí)現(xiàn)這個(gè)過(guò)程中,我們就需要將我們的代碼提交打maven服務(wù)器上。當(dāng)然,我們不可能把我們公司自己的項(xiàng)目代碼上傳到maven的公共服務(wù)器上,除了允許可以開(kāi)源的項(xiàng)目。在這里,我們還需要一個(gè)maven私服。

在將代碼上傳到maven服務(wù)器上的操作就比較簡(jiǎn)單了,只需要執(zhí)行mvn deploy就可以了。但是在執(zhí)行之前,我們需要配置上傳的maven服務(wù)器地址。
maven私服地址配置:
distributionManagement:分發(fā)項(xiàng)目到遠(yuǎn)程倉(cāng)庫(kù)
repository:倉(cāng)庫(kù)地址
snapshotRepository : 快照倉(cāng)庫(kù)存儲(chǔ)地址
<distributionManagement>
<repository>
<id>test</id>
<name>test</name>
<url>http://test.cn/nexus/content/repositories/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>snapshots</name>
<url>http://test.cn/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:大部分公司基本都有自己的maven私服,但是基本上都會(huì)限制上傳項(xiàng)目到里面去。因?yàn)殡m然有定時(shí)清理策略,但是要很合理的清理倉(cāng)庫(kù)就比較麻煩了,所以從源頭限制是最好的。
上傳源碼配置:
在項(xiàng)目上傳到私服,其他小伙伴拉取到了之后,很多小伙伴都會(huì)很奇怪為啥我代碼里面的注釋拉不到。點(diǎn)擊無(wú)數(shù)次idea里面的down resources都拉不到。其實(shí)這個(gè)時(shí)候也比較簡(jiǎn)單,只需要在·pom文件的bulid下增加一個(gè)plugin就行了。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
deploy的建議-快照(SNAPSHOT)
我們?cè)赿eploy的時(shí)候,每次deploy上去的代碼,同一個(gè)版本號(hào)別人都只能拉到一次。在快速迭代的版本過(guò)程中,怎么能夠避免每次都要更改版本號(hào),并且提示對(duì)應(yīng)的開(kāi)發(fā)伙伴呢。
這個(gè)時(shí)候,我們就需要使用maven快照了。我們?cè)诎姹竞竺嬖黾?code>-SNAPSHOT,就不需要每次都更改版本號(hào),只要等到版本迭代穩(wěn)定后,更改版本上線(xiàn)即可。
<version>1.0.0-SNAPSHOT</version>
當(dāng)然,每次拉取代碼編譯的時(shí)候,就要加上-U來(lái)強(qiáng)制拉取引用的項(xiàng)目了。
如打包的時(shí)候:
mvn clean package -U