同步操作将从 Java精选/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Maven生命周期的每一个阶段的具体实现都是由Maven插件实现的。插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
mvn [plugin-name]:[goal-name]
Maven提供了两种类型的插件:
1)Build plugins:在构建时执行,并在pom.xml的元素中配置。
2)Reporting plugins:在网站生成过程中执行,并在pom.xml的元素中配置。
一些常用插件列表:
clean:构建之后清理目标文件。删除目标目录。
compiler:编译Java源文件。
surefile:运行JUnit单元测试。创建测试报告。
jar:从当前工程中构建JAR文件。
war:从当前工程中构建WAR文件。
javadoc:为工程生成Javadoc。
antrun:从构建过程的任意一个阶段中运行一个ant任务的集合。
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)。
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
dependencies中的jar直接加到项目中,管理的是依赖关系(如果有父pom和子pom,则子pom中只能被动接受父类的版本);
dependencyManagement主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。
1、maven&ant同属apach是流行的构建工具
都是为了简化软件开发而存在的。但是maven因为自身管理一个项目对象模型(project object model),这个模型其实就是抽象了一个项目的开发流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也就是约定大于配置。约定大于配置的意思就是,我maven将项目开发的各个阶段固定起来了,每个文件的存放位置,每个阶段要生成什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。我知道一个软件是怎么开发出来,如果一个项目要使用maven,可以,但你要遵循我的规则,文件目录不要乱建乱放,只有这样maven才会将源码用起来。这就是约定大于配置,因为maven已经将流程固定下来了,只要遵守约定,就不需要自己手动去配置了,这将大大地提高开发效率。
2、maven的中央仓库和pom.xml文件
中央仓库统一存放了开发用到的各种jar包,要用时只需要添加依赖到pom文件中,maven就会自动下载,当然为了方便一般会在本地建一个仓库,减少下载时间。pom文件是maven的配置文件,maven就是通过管理pom文件和一些核心插件来管理项目。当然我前面将maven拟人化了,其实maven是没有智力的,一切都是封装好的流程,只是maven将很多操作隐藏起来了。
3、ant的build.xml文件
build文件是ant的配置文件,ant依靠它来执行操作,与maven不同的是ant没有固定一条程序链。你想要执行什么操作以及操作之间的顺序和依赖关系,都需要手动添加到build文件中,一点一滴都要写清楚,否则ant就不会执行。
4、maven和ant区别
Maven拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven是声明式的。你需要做的只是创建一个pom.xml文件然后将源代码放到默认的目录。Maven会帮你处理其它的事情。Maven有一个生命周期,当你运行mvn install的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。
而ant没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml文件都需要手动创建。
提交项目文件命令
git commit -a
含义:-a参数是指通过在命令行上加-a指示git提交已修改的所有被跟踪文件的新内容。
注意的是如果第一次提交新文件,可以在执行git commit -a命令之前先执行git add 命令。
通过在父模块中声明dependencyManagement和pluginManagement,然后让子模块通过元素指定父模块,这样子模块在定义依赖时就可以只定义groupId和artifactId,自动使用父模块的version,统一整个项目依赖的版本。
举例dependencyManagement方式的父类模块
父类pom.xml配置文件部分内容:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>${org.eclipse.persistence.jpa.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
子类pom.xml配置文件部分内容:
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
1)依赖路径最短优先原则。
项目Demo依赖了两个jar包,其中A-B-C-X(1.0)和A-D-X(2.0)版本。由于X(2.0)路径最短,因此项目中使用的是X(2.0)版本。
2)pom文件中申明顺序优先。
如果A-B-X(1.0)和A-C-X(2.0)版本,相同路径长度的情况下,maven会根据pom文件声明的顺序加载,如果先声明B,后声明C,那就最后的依赖就会是X(1.0)版本。
3)覆写优先原则。
子pom文件内声明的优先于父pom中的依赖包。
新增文件的命令:git add file或者git add
提交文件的命令:git commit –m或者git commit –a
查看工作区状况:git status –s
拉取合并远程分支的操作:git fetch/git merge或者git pull
查看提交记录命令:git reflog
Git是一个分布式的版本控制工具;而SVN是集中版本控制工具;
Git属于第3代版本控制工具;而SVN属于第2代版本控制工具;
Git客户端可以在其本地系统上克隆整个存储库;而SVN版本历史记录存储在服务器端存储库中;
Git支持离线提交;而SVN必须在线提交;
Git中Push/pull命令操作更快;而SVN中Push/pull命令操作较慢;
Git工程可以用commit命令实现自动共享;而SVN不支持自动共享。
如果撤销提交到索引区的文件,可以使用git reset HEAD file命令。
如果撤销提交到本地仓库的文件:
可以使用git reset –soft HEAD^n恢复当前分支的版本库至上一次提交的状态,索引区和工作空间不变更;
可以使用git reset –mixed HEAD^n恢复当前分支的版本库和索引区至上一次提交的状态,工作区不变更;
可以使用git reset –hard HEAD^n恢复当前分支的版本库、索引区和工作空间至上一次提交的状态。
POM工程
POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。
JAR工程
将系统打包成jar工程,用作jar包使用。是最常见的本地工程Java Project。
WAR工程
将系统打包成war工程,发布在服务器上的工程。比如网站或服务。
常见的网络工程Dynamic Web Project。
war工程默认没有WEB-INF目录及web.xml配置文件,但是在IDE工具中通常会显示工程错误,需要提供完整工程结构才可以解决问题。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。