Maven,SVN,Git,Web服务器

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:

    1. 新建maven模板项目:前提已安装本地tomcat并配置

    2. 配置本地maven

    3. 整合Tomcat:(maven标准目录:在main下新建java和resources目录,并分别mark directory as sources root和resources root)

    4. 启动tomcat,自动弹出页面,对应index.jsp内容;当内容存在中文而乱码时,首行添加代码<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

    5. 更多参考:IntelliJ IDEA使用教程(很全) - fcyh - 博客园;详解:使用maven创建web项目_在路上-CSDN博客_使用骨架创建maven的web工程

    6. MyEclipse + Tomcat + Maven + SVN项目完整搭建:MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建_在路上-CSDN博客

  • Maven命令:

    • compile:编译

    • test:测试

    • package:项目编译、单元测试、打包,但没有将包部署到本地或远程仓库

    • install:项目编译、单元测试、打包,同时将包部署到Maven本地仓库供本地使用,未部署到远程仓库

    • deploy:项目编译、单元测试、打包,同时将包部署到等地和远程仓库

    • clean:清除

    • 其他命名:

    • 命名在dos中需要mvn前缀

  • Maven详解:maven(一) maven到底是个啥玩意~ - 有梦想的老王 - 博客园

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值