美文网首页MAVEM
<JavaWeb>Maven核心概念(一)

<JavaWeb>Maven核心概念(一)

作者: 普通一般社会人 | 来源:发表于2016-04-19 22:05 被阅读40次

    约定(惯例)优先于配置

    这个原则说对于一些配置信息,maven会有给定的default默认值,这样,就不需要用户去手动配置更多的信息了。比如,maven-complier的版本。
    标准的目录结构
    如果没有修改配置的话,我们的代码存放在src/main/java目录下,*.class在target目录下,配置及静态文件默认放在src/main/webapp/WEB-INF目录下。我们只需要将源代码放置到正确的目录下,就可以了。
    项目描述符pom.xml
    这个文件的名字默认即为pom.xml。

    pom.xml

    pom(project object model),定义一个maven项目,存放项目的类型,项目的配置信息。artifact(构建)于project几乎等价。
    项目类型:<package>:pom,jar,war...
    坐标:<groupId><artifactId><version>
    属性:<properties>
    属性标签定义常量,它的格式如下:

    <properties>
        <name>content</name>
    </properties>
    

    使用时,采用${name}的方法来获取。当我们需要改动一个变量时,只用更改一处即可。
    依赖<dependencies>
    构建配置<build>
    构建<build>标签里存放的主要是maven构建的配置项,比如插件等。
    多项目继承关系
    子项目:<parent>和父项目<modules>,分别存放项目的信息。
    项目总体信息
    更多存在于开源项目中,存放开源协议,作者等信息。

    存在的问题

    我们的项目一般都是拆分为多个子项目来进行开发的,在这个过程中,总是会出现多个项目配置信息重复的现象,修改的时候会很繁琐,可能会出现依赖版本不一致等情况,会导致配置管理混乱。
    针对这个问题,我们借助面向对象的思想,采用集成的思路,将公共部分存放到父节点中。

    继承:

    继承存在Override重写的现象,子pom的配置优先。
    可继承项
    坐标属性,依赖配置,插件配置和一般性信息,如开发者信息等。
    对于pom来说,也有继承的根,所有的pom都继承自Super pom文件。它是maven的组成部分,存放在maven的安装目录下。如果没有显式指明,默认从super pom继承。Super pom定义了一些信息,如默认的文件结构,默认的编译器版本,默认的中央仓库等。

    mvn help:effective-pom//查看继承后的pom
    

    手动继承
    如果我们想要使用手动继承的方式来管理配置的话,需要借助<parent>元素,来声明继承的对象。

    多么块构建

    父项目
    类型为pom,定义<modules>
    子项目
    配置<parent>,类型一般为war或者jar。
    我们即使用继承,又使用组合,将多个子模块聚合到父pom中,在构建时会方便许多。

    相关文章

      网友评论

        本文标题:<JavaWeb>Maven核心概念(一)

        本文链接:https://www.haomeiwen.com/subject/fzrzlttx.html