本文共 13121 字,大约阅读时间需要 43 分钟。
目前的技术在开发中存在的问题:
一个项目就是一个工程
如果项目非常庞大,就不适合继续使用 package 来划分模块。最好是每一个模块对应一个工程,利于分工协作。借助于 Maven 就可以将一个项目拆分成多个工程。创建父工程(pom.xml)统一管理依赖,其他子模块继承该父工程即可;需要合并时,使用聚合,将各个子模块聚合到一起即可。
注意:如果不用 Maven 需要调用另一个项目中的一些类,则需要把那个项目打成 jar 包,然后引入该 jar 包,很麻烦。
项目中需要的 jar 包必须手动“复制”、“粘贴”到 WEB-INF/lib 目录下
带来的问题是:同样的 jar 包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助 Maven,可以将 jar 包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件接口,并不需要真的把 jar 包复制过来。注意:Maven 所有包都集中下载到本地仓库中,而在项目中的包只是引用本地仓库中的包,项目中并没有下载任何实质上的包,这就节省了很多空间。
一个 jar 包依赖的其他 jar 包需要自己手动加入到项目中。
类比:如高等数学的学习,依赖于初等数学的知识,如果没有初等数学的知识,我们就不会用高等数学。
Maven 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
常用的用途:我们只需要写出包的一些信息,它就可以帮我们自动导入所需要的 jar 包。
如果多个人参与项目,那么他们上传的包基本上都是重复的,这样会很浪费空间,所以 Maven 就可以将我们的包集中起来到局域网上的私服仓库中进行管理,避免上传的包过多的冗余,如果需要用到包,去仓库里面找就行了。
POM( Project Object Model,项目对象模型) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
类比:DOM(Document Object Model,文档对象模型)
pom.xml 对于 Maven 工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
数学中的坐标:
Maven 的坐标:GAV
使用下面三个向量在仓库中唯一定位一个 Maven 工程com.nemo.maven Hello 1.0.0
4.0.0 com.companyname.project-group project 1.0
所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。
节点 | 描述 | 备注 |
---|---|---|
project | 工程的根标签。 | |
modelVersion | 模型版本 | 一般需要设置为 4.0。 |
groupId | 这是工程组的标识。它在一个组织或者项目中通常是唯一的。 | 例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。 |
artifactId | 这是工程的标识。它通常是工程的名称。 | 例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。 |
version | 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。 | 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1 |
这个太长了。。大家酌情观看。
4.0.0 asia.banseon banseon-maven2 jar 1.0-SNAPSHOT banseon-maven http://www.baidu.com/banseon A maven project to study maven. jira http://jira.baidu.com/banseon Demo banseon@126.com banseon@126.com banseon@126.com http:/hi.baidu.com/banseon/demo/dev/ HELLO WORLD banseon banseon@126.com Project Manager Architect demo http://hi.baidu.com/banseon No -5 Apache 2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo A business-friendly OSS license scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon ...... ...... Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ ...... ...... ...... ...... ...... ...... banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default ...... org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true ...... banseon-maven2 banseon maven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2 Snapshot Repository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site business api website scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
转载地址:http://cdtkz.baihongyu.com/