maven 使用中的疑惑

如果两个maven项目在一个工作空间下,如项目A和项目B,其中A依赖于B,则在B项目打开(非关闭)的情况下,A项目实际依赖的是工作空间下的B,而不是本地仓库里的B,此时,对B项目所作的任何修改,A项目都可以感知得到,并且在做代码跟踪的时候,可以看到此时的源代码指向的就是工作空间下的B。作为一个项目组的成员,如果大家都有这两个项目在eclipse的工作空间中,则只需更新svn即可,无需上传B项目到中央仓库。但是在B项目关闭的情况下,A项目会去本地的maven仓库获取对B项目的依赖,如果找不到,会提示编译错误。此时做代码跟踪的话,eclipse会去本地的maven仓库中寻找源代码。
如果A项目依赖于B项目,但是没有B项目的原始工程,则B项目就必须发布到中央仓库,然后,A项目通过maven update把B项目下载到本地仓库,才可以使用。
第一步:一个项目如果需要发布到中央仓库,需要在pom.xml文件中配置如下信息
[html] view plaincopy
    <distributionManagement> 
      <repository> 
       <id>releases</id> 
       <name>Internal Releases</name> 
       <url>http://10.58.120.19:8058/nexus/content/repositories/releases</url> 
      </repository> 
      <snapshotRepository> 
       <id>Snapshots</id> 
       <name>Internal Snapshots</name> 
       <url>http://10.58.120.19:8058/nexus/content/repositories/snapshots</url> 
      </snapshotRepository> 
     </distributionManagement> 
主要是需要知道公司的maven中央仓库的IP地址。
对于一个项目来说,会可能使用以下公共生命周期阶段:

Ø       Validate – 验证项目正确性,以及所有必要的信息是否齐备;

Ø       Compile – 编译项目源代码;

Ø       Test – 使用单元测试框架测试编译过的源代码。这些测试无需代码被打包或者部署;

Ø       Package – 将编译过的代码打包,如JAR;

Ø       Integration-test – 为了集成测试能够进行,处理和部署应用到合时的环境;

Ø       Verify – 检查和检验package是否有效并且符合质量要求;

Ø       Install – 将package安装到本地仓库,供本地其他项目使用(作为依赖项);

Ø       Deploy – 在集成或者发布环境中,将最终的package拷贝到远程仓库,供其它开发人员或者项目共享。
记住,对于每个阶段,所有它之前的生命周期阶段都会执行,所以,你在命令行只要指定最后的那个就行。比如:

mvn install

如果执行这个命令的话,会编译、测试、打包、校验和安装package到本地仓库。



同时,同样的命令可以在多模块场景中使用。比如:

mvn clean install

这个命令会遍历所有的子项目,对每个子项目执行clean和install(包括所有install之前的阶段)。

maven依赖于其他module,自动将其他module依赖的jar包下载到本目录依赖目录中

猜你喜欢

转载自haidaoqi3630.iteye.com/blog/2162478