maven

Posted mxgboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven相关的知识,希望对你有一定的参考价值。

最常用的一个使用场景是:一个父工程下面好几个子module,module之前可能会有引用关系,那么要想被引用的module在发起引用的module中被识别,需要在子module执行下面的步骤:

  • mvn clean:将之前编译好的字节码清空;
  • mvn compile:重新编译子模块的源码;
  • mvn package:将子模块打包(jar或者war);
  • mvn install:将上一步中打好的包放入本地仓库中,以便其他模块识别并引用。

 

需要注意的是打包的方式有三种,分别为:jar、war、pom。这三者的区别自然不用说,但是需要注意的是pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packaging打包类型,所有的父级项目的packaging都为pom,packaging默认是jar类型,如果不作配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。此外子类项目的packaging值只能是war或者jar,前面已经说过,packaging默认是jar类型。如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。

 

而对于各个子项目,需要在其对应的pom文件开头申明对父级项目的引用,通过GAV实现。对于子项目自己的GAV配置,GV如果不配置,则会从父级项目的配置继承过来。子模块可通过dependencies标签来添加自己的依赖。如果一个需要继承父工程中引用的jar,那么需要在父工程中将这些需要继承给子module的依赖放在dependencyManagement中,在子module的pom文件中业务要声明相应的依赖,但是不需要声明版本号。

如下面的例子:

在父工程中的pom文件中声明了javax.servlet-api的引用,并且是在dependencyManagement标签中声明的,所以这个依赖可以由子模块继承,在module的pom文件中添加下面的引用即可,不需要声明版本号。

 

 


以上是关于maven的主要内容,如果未能解决你的问题,请参考以下文章

Spring+SpringMVC+MyBatis+Maven框架整合

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?

Maven FTP部署:无法创建目录

如何从詹金斯访问maven属性?

向小军 “小黑” 正式加入 Maven Skateboards