Maven-关于compile/install和local repository的理解

背景说明:

工作的项目是一个多模块Maven工程,平时增量时需要使用命令对关联的模块进行编译,初步检查代码有没有错,但是最近一编译就报一大堆import找不到或者找不到符号的问题,这个问题比较常见,网上一搜也有很多人问。

因为最初对Maven没什么概念(其实现在也一样),编译的命令被我从 install 改成了 compile ,因为这样更快一些。。但之前都一直很正常,现在突然就编译各种乱七八糟的错误,于是各种百度google查查,有人说是jdk的问题,有人说是文件编码问题,但查了之后发现都不是,最终在一篇帖子的回复里看到了:

 

看到这个的时候,才"恍然大悟" pom 文件里配置的那些依赖到底是怎么用的,之前只是从表面上看出,这个模块需要依赖其他的模块,但不知道 compile、install 环节都是怎么利用这些模块的,加上和BOSS聊天的时候,听到他提到"本地仓库"四个字,瞬间感觉明白了什么,所以在本机做了以下的测试来加深一下Maven编译多模块项目时的简单原理。

 

 

新建Maven工程:

然后去修改common模块的pom文件,添加对utils的依赖:

 

[html]  view plain  copy
 
  在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.       <groupId>com.mxm</groupId>  
  3.       <artifactId>Utils</artifactId>  
  4.       <version>0.0.1-SNAPSHOT</version>  
  5.       <scope>compile</scope>  
  6. </dependency>  


编译测试:

 

直接对common模块编译:

报错很明显,没有utils模块的jar包

 

对utils模块使用compile命令:

成功,但这时是不会把项目编译成jar包放在本地仓库中的。

 

对utils模块使用install命令:

这时就可以看到在本地仓库中同步了jar包。

 

这时再对common模块编译:

通过,这时把本地仓库下的Utils-0.0.1-SNAPSHOT.jar删掉,再编译依旧会报错。

 

结论:

所以,验证之后对Maven编译和多模块间的依赖有了理解,虽然这可能是Maven本身的基础知识,但因为一直对Maven没有研究,只是凭pom文件中的配置简单个人理解,造成了编译出错这种比较低级的问题。。

猜你喜欢

转载自jaesonchen.iteye.com/blog/2338480
今日推荐