1 Maven
1.1 基本概念
-
Maven:基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告、和文档的软件项目管理工具。核心功能是合理叙述项目之间的依赖关系
-
安装:
-
前提是环境已安装JDK
-
下载apache-maven-...-bin.zip文件并解压
-
配置环境变量,用mvn -version查看是否安装成功,如此才能使用命令行来使用和管理Maven项目,否则使用IDE自带功能
-
-
Maven仓库:
-
本地仓库:默认仓库;$user.home/.m2/repository目录下
-
自定义本地仓库:打开安装的Maven目录中的conf/settings.xml文件,自定义库路径
-
创建项目及项目过程中配置User settings file时可更换
-
-
第三方仓库(私服):一般为公司创建的公用的内部中心仓库;镜像路径映射到此
-
中央仓库(互联网)
-
-
使用和管理Maven:
-
命令行方式:mvn archetype:create -DgroupId=... -DartifactId=... -DarchetypeArtifacetId=...,创建web项目的话还需加-Dversion=0.0.1-snapshot
-
-
快速搭建一个maven-webapp项目:前提环境已经安装JDK,Maven,Tomcat:
-
新建maven模板项目:前提已安装本地tomcat并配置
-
配置本地maven
-
整合Tomcat:(maven标准目录:在main下新建java和resources目录,并分别mark directory as sources root和resources root)
-
启动tomcat,自动弹出页面,对应index.jsp内容;当内容存在中文而乱码时,首行添加代码<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-
更多参考:IntelliJ IDEA使用教程(很全) - fcyh - 博客园;详解:使用maven创建web项目_在路上-CSDN博客_使用骨架创建maven的web工程
-
MyEclipse + Tomcat + Maven + SVN项目完整搭建:MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建_在路上-CSDN博客
-
-
Maven命令:
-
compile:编译
-
test:测试
-
package:项目编译、单元测试、打包,但没有将包部署到本地或远程仓库
-
install:项目编译、单元测试、打包,同时将包部署到Maven本地仓库供本地使用,未部署到远程仓库
-
deploy:项目编译、单元测试、打包,同时将包部署到等地和远程仓库
-
clean:清除
-
其他命名:
-
命名在dos中需要mvn前缀
-
1.2 pom.xml
-
头信息:包含命名空间,标签遵循的规范,xml书写规范等
-
基本信息:
-
< modelVersion>4.0.0:Maven的模型版本
-
< groupId>:公司或者组织的唯一标识
-
< artifactId>:项目唯一id
-
< version>:版本形式,常见的两种:
-
xxx-SNAPSHOT:快照版,对应远程仓库的SNAPSHOT仓,即存储快照版本,开发过程使用过的不稳定版本
-
xxx:正式版,对应public(Release)仓,即存储正式版,稳定版本
-
流程:使用正式版,然后打包发布到远程仓库:java-xxx-1.0.0.jar;使用者需要依赖这个包,则按照maven的配置规则配置好artifactId、groupId和version即可获取到本地。当该模块需求发生变化,即修改了代码并更新远程仓库,包名还是java-xxx-1.0.0.jar;但此时,使用者刷新maven仓库但是会用本地仓库跟远程仓库比对,发现包名是同一个,则不会再去下载最新代码,继而依然使用本地的,即更新失败;
-
解决方式1:jar版本升级(即包名不同),如java-xxx-1.0.1.jar,缺点是频繁修改,版本太多
-
解决方式2:使用快照版;当确定当前版本已经稳定了,则可将SNAPSHOT去掉,发布稳定正式版
-
-
-
< distributionManagement>:配置snapshot快照库和release发布库的地址
-
< parent>父工程:存在大量核心依赖和版本;无需再导入和编写版本
-
< modules>:整合所有的子module,包括编译顺序;根据maven依赖引入的最短路径原则,即路径最短的依赖最先引入,因此将更加底层的module放在最前面;
-
< packaging>:项目打包类型
-
默认jar:maven install时,src同级生成一个target文件夹,将所有Java文件编译成.class文件,且按照相同文件结构放置在classes目录下,最终压缩为jar文件
-
在父级项目中值为pom,因为父级项目只用作子module的整合,而不用于生成jar或war
-
war:类似jar,但多了一层WEB-INF目录,所有依赖的jar包放在其下的与classes同级的lib文件夹下;适合部署项目,因为不需要再下载依赖的jar包
-
其他:maven-plugin,ejb等
-
-
< name>:项目名称,可省
-
< description>:项目描述,可省
-
< url>:项目主页URL,可省
-
-
自定义信息:< properties>,在其中自定义一些maven属性,如< java.version>1.8< java.version>,在pom.xml中通过${java.version}来引用它
-
依赖关系:
-
< dependencyManagement>:顶级父项目中,用来统一所有子module使用的依赖及版本,其下罗列所有子module共用的< dependencies>;但只是声明了依赖而没有引入,在子module中没有再声明,则不会继承,声明后不指定版本,则继承该项并使用父项目中的version和scope;若自己指定版本,则会使用子module中指定的版本
-
< dependencies>:罗列所有的依赖信息< dependency>
-
< dependency>:依赖信息
-
< groupId>
-
< artifactId>
-
< version>
-
< type>
-
< scope>
-
<exclude>:排除某个版本, 常用于解决版本冲突问题
-
-
-
-
-
多环境项目配置:
-
< profiles>:
-
< profile>:不同环境运行的不同配置文件,该配置文件中配置针对各自环境特点的数据源、日志文件、软件运行等配置
-
< id>:不同后缀名的application.yml文件,如< id>dev表示application-dev.yml文件
-
< properties>:自定义属性,如为每个profile都定义一个名为profiles.active的properties,每个环境的值不同。当打包项目时,激活不同的环境,profiles.active字段就会被赋予不同的值
-
< activation>:指定激活方式
-
< activeByDefault>true/false:配置默认激活
-
< jdk>:通过jdk版本激活,如值为1.5表示jdk是1.5时激活此profile,值为[1.5,)表示jdk为1.5及以上时激活
-
< os>:根据操作系统激活
-
< property>:根据环境变量激活
-
< file>:通过文件的存在或缺失激活
-
这些方式的优先级都低于使用maven命令行方式激活:在maven打包时,通过-p参数指定激活的profile的id,如mvn clean package -Pdev
-
-
-
-
-
项目构建:
-
< build>:
-
< plugins>:设置构建的插件
-
< resources>:资源文件管理,用于引用或排除文件
-
-
2 Git
2.1 概念
-
分布式版本控制工具(而SVN,CVS是集中式)
-
按元数据方式存储内容(而SVN是按文件);内容完整性优于SVN,因为内容的存储使用SHA-1哈希算法,能确保代码内容的完整性,在遇到磁盘故障或武罗问题时降低对版本库的破坏
-
没有全局版本号(SVN有)
-
本地:
-
**工作区:本地项目;即还未git add时的代码;
-
-
暂存区stage:.git目录下,git add以后临时存储计划要提交的代码
-
本地版本库:git commit后本地存储的代码,从远程仓库pull代码下来的地方,push代码到远程仓库;第一次pull即clone
-
远程库:代码托管中心;团队共享;项目组fork主库为分支,从分支pull代码;push代码到分支,审核push request后merge到主库
2.2 命令
-
Linux命令大都适用于操作Git,如vim text.txt创建文件
-
git init:生成本地库,即将当前文件夹交由git管理;git命令大多在库目录下执行
-
git config --global user.name userName和user.email email:设置签名,相当于注册账号,用于区别代码提交人员;签名有项目级别,仅针对当前项目有用,不推荐;使用系统级别,对当前操作系统用户都有效
-
配置信息git config --list;重复的变量名说明来自不同的配置文件,后面覆盖前面也即深层目录覆盖上层目录
-
git clone [-b master] url:克隆项目;参数可指定分支名称;clone下载项目的同时,创建远程地址默认别名为origin,且初始化本地库(生成.git隐藏目录)
-
git remote -v:查看远程地址别名;还能看到push地址和fetch地址
-
状态:git status:显示本地库中代码状态;包括提示add,checkout,reset等;[-s表示简短输出]
-
添加还是回滚:
-
git add file:将修改的或新加的代码交由git管理(由红色变为绿色);vim查看内容会看到变化
-
git checkout file:不add,而是将修改部分回滚;查看内容不会有变化,即与修改之前内容一样,即与本地库中一样
-
-
git reset HEAD file:将已经add的代码回滚;HEAD代表最新次提交的唯一标识码
-
git rm [f] file:将工作区(即还未add的)和暂存区(即已add的)代码转回工作区(变成红色);f表示强制,在修改过并已放到缓存区后想移除,则必须强制;--cached从暂存区移除(工作区还存在)
-
git commit:提交所有暂存区中变更过的代码;
-
:wq:保存并退出
-
一般会进入到文本编辑去编写提交信息;也可以直接在命令上添加参数:git commit -m "message" [file]
-
-
git log:提交日志记录;包括每次提交的唯一标识码,签名,日期和message;git log --pretty=oneline可以格式良好的显示;或省略pretty来截取标识码;HEAD标识所在记录代表最新提交
-
git reflog:以每次提交之间的关系显示提交信息,HEAD@{数字}标识,数字表示最新提交到当前标识的提交需要多少步;如,从第二次提交回到第一次提交,git reset --hard 第一次提交的唯一标识码,后提示HEAD指向第一次提交,且内容也变成第一次提交后的数据;也可以向后,即从第二次回到第三次;使用git rm file删除commit后的文件;若又想找回删除的文件,则同理git reset -- hard HEAD或标识码
-
git diff file:对比add之前与之后的同名文件
-
git push orgin master:推送代码
-
git pull:下载,是git fetch和git merge的合并
-
冲突:及时push;经常pull
-
编写文件.gitignore,取消git管理某些文件
-
分支:
-
创建分支:git branch [branchName],没有参数时表示分支列表
-
刷新分支:有时候git看不到gitlab上新建的分支,需要本地刷新一下:git fetch
-
查看当前分支:git branch [-a];-a查看所有
-
切换分支:git checkout [-b] [branchName],-b选项表示创建新分支并立即切换到该分支
-
删除分支:git branch -d [branchName]
-
分支合并:(在master分支下操作)git merge branchName
-
-
使用可视化工具:小乌龟TortoiseGit
2.3 整合IDEA
-
配置Git:Settings - Version Control - Git,配置Git的安装目录(bin下git.exe)
-
纳入:VCS - Import into Version Control - Create Git Repository,选择项目后,生成.git隐藏文件
-
代码:红色或褐色,说明未add;add后为绿色
-
右键后Git:
-
commit选项
-
Repository:设置remote即push的远程库url;执行push
-
-
clone:VCS
-
冲突:提交时提示push失败;点击merge,在显示的冲突代码conflicts中,<<<HEAD为库上最新版本,===下是开发要push的版本;选择Accepts需要的版本
2.4 GitHub
-
软件项目托管平台,因仅支持git作为唯一版本库格式而得名
3 SVN
3 Web服务器
3.1 Tomcat
-
下载并安装apache-tomcat;目录结构为:
-
启动与关闭测试(前提:配置了JDK环境变量JAVA_HOME):bin下启动startup.bat(linux环境启动start-up.sh),出现Server startup in ...,页面输入http://localhost:8080/后将出现页面;shutdown.bat关闭;采用命令行启动:bin下输入命令catalina run,此种方法会打印启动异常日志
-
配置:conf/server.xml中Connector标签中修改默认端口port:8080,1-65535以内,及其他属性设置
-
Tomcat部署web项目并启动:
-
方式1:将项目或打好的war包拷贝到webapps目录下,点击start.bat启动tomcat;http://localhost:8080/即访问tomcat的web apps目录,/后面接工程名即可访问具体工程,如http://localhost:8080/DoTest/index.jsp;默认访问ROOT项目;默认访问index.html/jsp文件
-
启动失败:邮件编辑start.bat,首行加入SET JAVA_HOME=D:\jdk所在目录,和SET TOMCAT_HOME=D:\解压后的Tomcat目录,或者配置环境变量;shutdown.bat同理
-
-
方式2:在conf/Catalina/localhost目录下新建xml配置文件,注意文件的编码为UTF-8;此方法工程目录任意即不一定在webapps下:访问http://localhost:8080/DoTest的path即可映射到具体项目
-
-
IDEA集成tomcat:可以整合多个tomcat,在new工程时可选;
-
Web工程目录:
-
部署项目并启动tomcat:启动成功后将自动弹出index.jsp页面;包括端口号,页面访问工程路径,默认浏览器,热部署,等都可在此处修改:
-
一个Tomcat部署多个项目:
-
不修改端口号:将多个项目放在webapps下,修改server.xml中新增web节点< Context docBas="项目名" path="/访问路径"/>,用不用路径访问
-
不同端口号:复制webapps目录,放入各自的项目,修改server.xml
-