一。编程生命周期
1。编码
1.1 依赖jar包问题
1.2 代码版本问题 代码更新问题
XXXXXXXXX
1.3 单元测试
2。编译
javac编译
eclipse编译(直接自动编译 整个项目的源代码)
3。项目(project)
源代码聚合在一起 相同的功能在同一个项目
simple project(简易项目)
JAVA PROJECT
WEB PROJECT
4。发布部署
JAVA PROJECT
打包:jar
java -jar jar包运行
WEB PROJECT
打包:war
tomcat中运行
5.集成测试
6.运维
二。maven(编程生命周期管理工具)
学习文档 :
http://maven.apache.org/users/index.html#
中文文档:
https://book.huihoo.com/maven-the-definitive-guide/index.html
教程:
http://www.runoob.com/maven/maven-tutorial.html
三。maven特点
maven使用项目对象模型(POM Project Object Model)管理项目
约定优于配置 约定好目标项目的格式 源代码位置 配置文件位置
–src
----main
--------java
--------resources
–pom.xml
四。maven安装
1下载apache-maven-3.53 https://archive.apache.org/dist/maven/maven-3/
2 解压 将bin目录添加到环境变量 PATH中
3 解压镜像包(1G)
找到maven安装目录/conf/setting.xml 添加
E:\升华课程\linux\maven\repo
四。maven常用命令
1 创建项目
mvn archetype:generate
1271 java项目
1275 web项目
项目标识
开发公司:groupid 域名.公司名 cn.ps
项目名称 artifictid
版本号
2 编译
进入 pom.xml同级的目录
mvn compile
3 打包
进入pom.xml同级的目录
mvn package
jar包
war包
使用tomcat6运行 注意只支持javaee5
mvn -Dmaven.tomcat.port=8081 tomcat:run
使用tomcat7运行 支持javaee6
mvn -Dmaven.tomcat.port=8081 org.apache.tomcat.maven:tomcat7-maven-plugin:run
4 其他maven命令
mvn install 安装到maven仓库中
mvn deploy 发布到远程仓库中
mvn eclipse:eclipse 生成eclipse的
五。 运行
jar包 java -cp jar包名 带有main方法的类
war成 mvn tomcat:run
mvn jetty:run 不支持
mvn org.mortbay.jetty:jetty-maven-plugin:run
六 项目的坐标
cn.ps 公司名称
MAVEN_WEB 项目名称
0.0.1-SNAPSHOT 版本号
war 打包的类型
关于版本号
..-
主版本一次+1 发生重大更新
次版本一次+1 发生了模块变化 新增小功能 减少了某些功能
增量版本 发生了修复简单bug
限定版本 SNAPSHOT(开发中)|LATEST(引用最近版本)|RELEASE(发布)
七 maven仓库
》》超级pom执行命令:mvn help:effective-pom
》》私服 (代理)
maven中央仓库 https://repo.maven.apache.org/maven2
阿里巴巴私服 http://maven.aliyun.com/mvn/view
著名私服列表 https://mvnrepository.com/repos
》》搜索jar的maven坐标
http://maven.aliyun.com/mvn/search
https://mvnrepository.com/ 推荐
https://oss.sonatype.org/#welcome 发布jar包到中央仓库
八 关于maven依赖需要解决问题
1 多项目的版本冲突问题
同一个项目中pom的版本冲突
6.0.2
mysql
mysql-connector-java
M
Y
S
Q
L
−
V
E
R
I
O
N
<
/
v
e
r
s
i
o
n
>
<
/
d
e
p
e
n
d
e
n
c
y
>
跨
项
目
解
决
版
本
冲
突
问
题
》
》
继
承
(
不
推
荐
)
继
承
了
父
p
o
m
的
依
赖
<
p
a
r
e
n
t
>
<
g
r
o
u
p
I
d
>
c
n
.
p
k
<
/
g
r
o
u
p
I
d
>
<
a
r
t
i
f
a
c
t
I
d
>
M
A
V
E
N
P
A
R
E
N
T
<
/
a
r
t
i
f
a
c
t
I
d
>
<
v
e
r
s
i
o
n
>
0.0.1
−
S
N
A
P
S
H
O
T
<
/
v
e
r
s
i
o
n
>
<
/
p
a
r
e
n
t
>
父
p
o
m
定
义
<
p
r
o
p
e
r
t
i
e
s
>
<
M
Y
S
Q
L
V
E
R
S
I
O
N
>
6.0.3
<
/
M
Y
S
Q
L
V
E
R
S
I
O
N
>
<
/
p
r
o
p
e
r
t
i
e
s
>
子
项
目
中
引
入
依
赖
<
d
e
p
e
n
d
e
n
c
y
>
<
g
r
o
u
p
I
d
>
m
y
s
q
l
<
/
g
r
o
u
p
I
d
>
<
a
r
t
i
f
a
c
t
I
d
>
m
y
s
q
l
−
c
o
n
n
e
c
t
o
r
−
j
a
v
a
<
/
a
r
t
i
f
a
c
t
I
d
>
<
v
e
r
s
i
o
n
>
{MYSQL-VERION}</version> </dependency> 跨项目解决版本冲突问题 》》继承(不推荐)继承了父pom的依赖 <parent> <groupId>cn.pk</groupId> <artifactId>MAVEN_PARENT</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> 父pom定义 <properties> <MYSQL_VERSION>6.0.3</MYSQL_VERSION> </properties> 子项目中引入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>
MYSQL−VERION</version></dependency>跨项目解决版本冲突问题》》继承(不推荐)继承了父pom的依赖<parent><groupId>cn.pk</groupId><artifactId>MAVENPARENT</artifactId><version>0.0.1−SNAPSHOT</version></parent>父pom定义<properties><MYSQLVERSION>6.0.3</MYSQLVERSION></properties>子项目中引入依赖<dependency><groupId>mysql</groupId><artifactId>mysql−connector−java</artifactId><version>{MYSQL_VERSION}
一旦在父pom中修改了变量名 所有的子pom都需要修改
》》依赖管理 多继承 (不能继承变量和父pom的依赖) 管理版本号
父pom中定义所有的依赖的版本 不会下载jar包
javax.servlet
jstl
${JSTL_VERSION}
子pom需要继承 同时不再需要带版本号
javax.servlet jstl2 代码量大(拆分 多模块项目)
项目划分为多模块
alt+shift+v
注意模块项目
编译过程 直接从项目中找
mvn 运行过程 直接从仓库中找
mvn install 自己仓库
mvn deploy 中央仓库