Maven 常用命令
用于项目编译
1. clean 清理
将项目根目录下面的target目录清理掉。
2. compile 编译
将项目中的.java文件编译为.class文件
3. test 执行单元测试
单元测试类名有要求xxx.test结尾
将项目根目录下的src/test/java目录下的单元测试类都会执行。
4.package
web project war包 打包到项目根目录下的target
java project jar包
5. install 安装
解决本地多个项目公用一个jar包 打包到本地仓库
概念模型:
Maven的两大核心:
1. 依赖管理,POM 项目对象模型。
dependency 依赖管理模型。
2. 项目构建
通过命令来构建,
maven与传统构建项目的不同
1. 不在拷贝jar包
2. 项目结构不同
pom.xml 项目对象模型。
1. 本项目的坐标信息。
2. 本项目JDK编译版本的信息。
3. 本项目需要的依赖信息。
Maven 项目的生命周期
在Maven存在三套生命周期,每一套生命周期都是相互独立的。在一套生命周期内执行后面的命令前面的会自动操作。
1. cleanLifeCycfe:清理的生命周期
2. defaultLifeCycle 默认的生命周期 compile istall test package
3. siteLifeCycle:站点生命周期 site
在eclipse中配置Maven插件
Maven 实战第二天
1. 传递依赖冲突解决(了解)
传递依赖:A(项目)依赖 B,B 依赖 C(1.1版本);C是A的传递依赖,B是A的直接依赖,A是工程。导入依赖D, D依赖C(1.2版本)
C发生冲突。
1.1 Maven 有自己的调节原则
-
-
- 第一原则: 第一声明者优先。
-
谁先定义就用谁的传递依赖。如下图,只有一个spring-beans
可以通过改变pom.xml 代码顺序来改变顺序
-
-
- 第二原则:路径近者优先。
-
直接依赖级别高于传递依赖。
1.2 排除依赖
1.3 版本锁定
2. 通过Maven 整合ssh框架。(重点)
2.1.1
ssh配置文件加载过程:
3. 通过maven 对项目进行拆分、聚合 (重点)
现在对已有的ssh项目进行拆分:将dao层代码已经配置文件提取出来到一个表现独立工程中。Service、Action同理拆分。
Ssh-parent:父工程。
Ssh-dao
Ssh-service
Ssh-web
拆分完成之后进行聚合,提出概念父工程。
3.1 创建父工程。
创建好的父工程的目录结构:只有pom文件
- 项目需要的依赖信息,在父工程定义,子工程直接继承过来。
- 将各个子模块聚合在一起。
父工程不进行编码
3.2 将我们创建好的父工程发布到本地仓库。
原因:将来service、dao发布到本地仓库。没发布service工程会报错。
如果忘记此步骤:将父工程发布到本地仓库。
3.3 创建子模块Ssh-dao
Ssh-dao:负责数据访问层:包含dao相关代码及配置文件。
将spring的配置文件进行了拆分。
applicationContext-basic.xml:项目基础代码。
applicationContext-dao.xml:dao的bean对象代码。
3.4 创建子模块Ssh-service。
在ssh-service工程中添加ssh-dao的依赖。
总结:当项目中需要的某一依赖没有传递过来,在自己工程中添加对应依赖就可以。
3.5 创建Ssh-web模块。
3.6 运行方式:
1. 运行父工程。父工程将各个子模块聚合在一起,运行ssh-web打成war包发布到tomcat
2. 直接运行web工程,web – Service – dao
3. 部署到tomcat
4.私服的一个应用 (了解)
4.1私服安装
1. 下载安装包
- 解压到本地
- 使用管理员权限打开idos下执行命令安装私服
- 找到私服访问路径。
http://localhost:8081/nexus/#welcome
登录: admin/admin123
Hosted:宿主仓库。
存放本公司开发的jar包(正式版本、测试版本、第三方:存在版权问题Oracle)
Proxy 代理仓库:
代理中央仓库、apache下测试版本的jar包。
Group 组仓库:
将来连接组仓库。
Virtual 虚拟仓库(已废弃)
- 如何上传jar到私服
1)、在maven目录下conf/settins.xml认证:配置用户名和密码。
2). 在将要上传的项目的pom.xml中配置jar上传路径。
3.执行命令发布项目到私服(上传)。
Deploy
4. 下载jar包到本地仓库。(应用)
在maven目录下conf/settings.xml 下配置模板。
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://localhost:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public </id>
<name>public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
<!-- <releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>-->
</pluginRepository>
</pluginRepositories>
</profile>
2.激活模板。
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
5. 总结。
1. 使用maven整合ssh框架。
2. 拆分ssh工程。
A)将每一层代码 & 配置文件全部提取到一个独立工程中。
3. 私服(了解)。
上传、下载jar包。
- Maven的好处。
- 不再拷贝jar包,项目不需要存放jar包,源代码小。
- 将代码的耦合度进一步降低
使用maven开发的工程,如果环境统一,导入maven的项目就不会报错。
-
- 方便项目进行升级。
- 节省人力的成本。