您的位置:首页 > 其它

Maven3.0.4基础原理分析

2015-08-12 16:31 239 查看

maven是一个项目构建和管理工具。它可以方便的进行代码编译、依赖管理和项目发布等。

一句话概括其原理:采用远程仓库和本地仓库以及核心的pom.xml方式,其中pom.xml中定义的jar文件从远程仓库下载到本地仓库,同一版本的jar只需下载一次。

配置本地仓库:

=>在maven的文件夹下的conf子目录的下:

设置仓库位置

提示:建议先将原setting文件拷贝一份,比如我就拷贝为settings_home.xml,以便之后使用。

pom.xml文件解析:

<groupId>---项目名称

<artifactId>---模块名称(建议用“项目名_模块名”设置)

<version>---版本

<dependencies>

<dependency>......</dependency>

</dependencies>---依赖的包们

<dependency>......</dependency>中

1、需要配置<groupId>、<artifactId>、<version>这三项(必须要配置的),来确保唯一性。

2、配置<scope>属性来声明该依赖会在何时用到(有时编译的时候需要而生成war包不需要)

(1)、<scope>test</scope>-----编译有效,在编译、打包会用此依赖。

(1)、<scope>compile</scope>-----测试、编译有效,编译、打包不会用此依赖。

(1)、<scope>provided</scope>-----测试范围有效,生成war包不会用此依赖(比如servlet-api)。

(1)、<scope>runtime</scope>-----运行有效,编译不依赖。

一个模块的基础结构:

源代码:src/main/java

源码资源文件:src/main/resources

测试代码:src/test/java

测试资源文件:src/test/resources

注意:这个结构可以以maven方式导入项目中哦。

maven中的聚合:

在实际开发中,如何将多个模块进行一次编译、打包、发布呢?

需要在一个聚合项目(普通项目,只做聚合)中进行,只需要在聚合项目的pom.xml文件中加入

<packing>pom</packing>

<modules>

<module>../user-core</module>

<module>....../......</module>

</modules>

***若<packing>类型为pom,<module>的值以pom为主目录的相对路径哦

maven中的继承:

类似于java的继承概念,解决各个模块中都依赖同样的jar包,故提取成公共模块。

在一个父模块(普通项目,只做继承)里的maven的pom文件中定义了相关的常量、依赖、插件等。

在子模块的pom.xml文件中配置<parent>

<parent>
<groupId>XXXXXX</groupId>

<artifactId>user-parent</artifactId>

<version>0.1.1-SNAPSHOT</version>

<relativePath>../user-parent/pom.xml</relativePath> //父模块路径

</parent>

那么问题来了,如果每个子模块有继承父模块的依赖,有些不需要肿么办呢?

解决方式是:将父模块的依赖<dependencies>用<dependencyManagement>包裹

这样就可以在子模块中选择需要的依赖了,如果子模块需要该依赖,只需要在<dependency>.

<groupId>---项目名称(同父模块的)

<artifactId>---模块名称(同父模块的)

这两项,与父模块形成一对一关系即可。

不知道我简要概述的是否明白,还有eclipse部署maven、maven项目的部署发布等详细问题,可参考以下地址

http://download.csdn.net/detail/u013938465/8996365
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: