Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project LifeCycle),一个依赖管理系统(Dependency managerment System),和用来运行定义在生命周期(phase)中插件(plugin)目标(goal)的逻辑。
①首先,maven是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。
②其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。
1)install 本地安装, 包含编译,打包,安装到本地仓库
2)clean 清除已编译信息,删除工程中的target目录。
3)compile 只编译。javac命令
4)deploy 部署。常见于结合私服使用的命令,相当于是install+上传jar到私服。
5)package 打包。包含编译,打包两个功能。
在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
(1)Clean清理项目: 在进行真正的构建之前进行一些清理工作。 mvn clean
(2)Default构建项目: 构建的核心部分,编译,测试,打包,部署等等。 mvn compile test package install deploy
(3)Site生成项目站点: 生成项目报告,站点,发布站点。
Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
对于Maven来说,仓库分为两类:本地仓库和远程仓库。
1)POM工程
POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。
2)JAR工程
将会打包成jar用作jar包使用。即常见的本地工程 - Java Project。
3)WAR工程
将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程错误,提供完整工程结构可以解决。
使用<dependency>的<exclusion>元素将会引起冲突的元素排除。
● 可能由于网络波动,每有下载完成,又缓存了,这个时候下载多少次都会失败,解决办法就是去本地仓库将对应的依赖全部删除再重新下载
● 由于依赖传递带来的版本冲突问题,解决办法就是排除依赖。
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
git add 添加文件到暂存区
git commit 提交文件到本地仓库
git pull 从远程仓库拉取项目到本地
git push 将本地仓库的新的改变推送到远程仓库
git clone 将远程仓库复制到本地
git fetch 抓取
git merge 合并
git clone:是在本地没有版本库的情况下,从远程仓库克隆一份到本地,是一个本地版本库从无到有的过程
git pull:是在本地仓库已经存在的情况下,将远程最新的commits抓取并合并到本地版本库的过程
git fetch: 从远程版本库抓取最新的commits,不会进行合并
git merge:合并
所以git pull = git fetch + git merge
push之前一定要进行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令组合。这时候,可能会出现版本冲突,如果出现的话,需要解决完冲突再进行代码push。
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。
特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
创建一个bug分支,然后进行bug处理,处理完毕后,合并到review分支,组长review成功后才能够合并到master,合并完成之后删除bug分支,回到dev分支继续开发。
在公司开发忘记提交到github托管,在家里又继续开发新的功能,然后到公司昨天的代码跟你的新功能合并的时候可以用git fecth ---> git rebase,那么他的提交记录就不会出现分叉,保持了提交记录的整洁.
用的是github,因为公司比较小,所以没有自己搭建gitlab,
但是用github的时候代码一定要用保密的,9$(美元)建立一个仓库。
1)解决冲突文件时,会先执行git stash,然后解决冲突;
2)遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;
3)切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;
查看分支的提交历史记录:
命令git log –number:表示查看当前分支前number个详细的提交历史记录;
命令git log –number –pretty=oneline:在上个命令的基础上进行简化,只显示sha-1码和提交信息;
命令git reflog –number: 表示查看所有分支前number个简化的提交历史记录;
命令git reflog –number –pretty=oneline:显示简化的信息历史信息;
相同点:git和svn都是版本控制系统,两者都有自己的服务器。
区别:
1.git是分布式,svn不是分布式。
2.git把内容按元数据方式存储,而svn按文件。
3.git分支和svn分支不同。
4.git没有一个全局版本号,svn有。
5.git版本号要优于svn
解决冲突有三种选择:
A.放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)
B.放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
C.手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。
快捷键 | 功能 |
---|---|
Ctrl + Y | 删除当前行 |
Ctrl + D(Duplicate复制) | 直接在下一行复制出当前行 |
Ctrl + W | 选中文本,连续按可以扩大选中范围(以单词为单位) |
Ctrl + Enter | 在当前行上面插入一行空行。注意:需要在行首使用该快捷键 |
Ctrl + Backspace | 可以一下字删除整个单词 |
Ctrl + " + / -" | 将当前方法块代码展开 / 折叠 |
Ctrl + / | 添加注释和取消注释,【第一次是添加注释,第二次是取消注释】 |
Ctrl + shift + / | 添加/取消多行注释,【第一次是添加注释,第二次是取消注释】 |
Ctrl + F(Find 查找) | 在当前文件中查找文本 |
Ctrl + R(Replace 替换) | 查找并替换文本,支持多行查找,或者只在代码中查找,或者只在注释中查找,或者使用正则表达式查找 |
Ctrl + O | 快速重写基类或者接口中的方法 |
Ctrl + 空格 | 提示代码,在输入代码时可以提示关键字 |
Ctrl + J | 提示代码,在输入代码时可以提示快捷键 |
Ctrl + H(Hierarhcy层级) | 显示类结构图(类的继承层次) |
Ctrl + G | 快速定位到指定行指定列 |
Ctrl + [ | 快速定位到代码块开始位置 |
Ctrl + ] | 快速定位到代码块结束位置 |
Ctrl + N | 快速搜索和打开类 |
Ctrl + B | 快速定位源码,将光标放在方法上输入Ctrl + B , 可以去到该方法的源码 |
Ctrl + U | 快速转到当前类的父类 |
快捷键 | 功能 |
---|---|
Alt + / | 快速补全代码 |
Alt+Q | 显示当前方法的声明 |
Alt + Enter | 快速提示完成,在代码可能存在语法问题时,IDEA 会提示使用该快捷键可以快速自动修正(功能非常强大,最常使用) |
Alt + insert | 快速生成含有任意形参的构造器,和私有属性的 Getter / Setter 方法等(最常使用) |
Alt + 1 | 快速打开或隐藏 Project 面板 |
Alt + 7 | 快速显示类结构,可以显示类中包含的所有属性和方法 |
Alt + left / right | 快速切换代码视图 |
Alt + Up / Down | 在方法间快速移动定位(即光标以方法为单位移动) |
快捷键 | 功能 |
---|---|
Shift + Enter | 在当前行下面生成一行空行,光标自动移到空行行首 |
F2 或 Shift + F2 | 快速定位高亮错误或警告位置 |
快捷键 | 功能 |
---|---|
Ctrl + Alt + L | 快速格式化代码 |
Ctrl + Alt + I | 自动缩进行 |
Ctrl+Alt+O | 优化导入的类和包 |
Ctrl + Alt + T | 将选中的代码使用 if、while、try/catch 等代码块包装起来(功能强大) |
快捷键 | 功能 |
---|---|
Ctrl + Shift + Delete | 去除相关的代码块包装,是Ctrl + Alt + T的相反操作 |
Ctrl + Shift + 向上/下箭头 | 将光标所在的代码块向上/下整体移动 |
Ctrl + Shift + F10 | 快速运行当前的程序,当前你在哪个程序就运行该程序 |
Ctrl + Shift + / | 添加/取消多行注释,【第一次是添加注释,第二次是取消注释】 |
Ctrl + Shift + J | 快速整合两行代码,将光标所在行和下一行的代码合并成一行 |
1)快速生成主函数:psvm/ main
2)快速生成打印语句:sout
3)快速生成普通 for 循环:fori
4)快速生成增强 for循环:iter