通过maven将项目管理起来之后,拉取pom文件中的依赖项目。估计大部分小伙伴都想过这些文件是哪里来的,怎么来编译呢。
微服务下的相互引用
相信接触过微服务架构的java开发伙伴,都对依赖其他项目的用法比较熟悉。往往在一个微服务中,A服务被B服务依赖,在B服务的pom文件中必然会有A服务的引用配置。
微服务下的deploy
在微服务框架下服务module较少的情况下,每次编译直接全量编译解决引用项目的问题。但是,随着项目的逐渐增大,项目开发人员的增加,不可避免的会出现:代码提交不及时,接口在不知情的情况下被别人改了等其他各种情况。
对此,将我们微服务中引用的接口、类提取为一个可单独引用模块是必不可少的一个步骤。在实现这个过程中,我们就需要将我们的代码提交打maven服务器上。当然,我们不可能把我们公司自己的项目代码上传到maven的公共服务器上,除了允许可以开源的项目。在这里,我们还需要一个maven私服。
在将代码上传到maven服务器上的操作就比较简单了,只需要执行mvn deploy
就可以了。但是在执行之前,我们需要配置上传的maven服务器地址。
maven私服地址配置:
distributionManagement
:分发项目到远程仓库
repository
:仓库地址
snapshotRepository
: 快照仓库存储地址
<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私服,但是基本上都会限制上传项目到里面去。因为虽然有定时清理策略,但是要很合理的清理仓库就比较麻烦了,所以从源头限制是最好的。
上传源码配置:
在项目上传到私服,其他小伙伴拉取到了之后,很多小伙伴都会很奇怪为啥我代码里面的注释拉不到。点击无数次idea里面的down resources
都拉不到。其实这个时候也比较简单,只需要在·pom
文件的bulid下增加一个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)
我们在deploy的时候,每次deploy上去的代码,同一个版本号别人都只能拉到一次。在快速迭代的版本过程中,怎么能够避免每次都要更改版本号,并且提示对应的开发伙伴呢。
这个时候,我们就需要使用maven快照了。我们在版本后面增加-SNAPSHOT
,就不需要每次都更改版本号,只要等到版本迭代稳定后,更改版本上线即可。
<version>1.0.0-SNAPSHOT</version>
当然,每次拉取代码编译的时候,就要加上-U来强制拉取引用的项目了。
如打包的时候:
mvn clean package -U