同步操作将从 Java精选/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Maven即为项目对象模型(POM),它可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。
由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
由于Maven面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长,相比较Gradle,在之后的篇幅中会说明,欢迎大家关注微信公众号“Java精选”。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。
当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
dependencyManagement用来统一管理依赖版本的,其目的是防止不同子项目引用不同的版本而导致编写代码的时候出现意外错误。之前的面试题已经说明了该参数的作用,此处就不在阐述。
配置方式
1、假设父工程pom文件,如下:
<groupId>com.jingxuan</groupId>
<artifactId>J</artifactId> //项目名称J
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
//对项目A的版本进行了统一管理,子类使用A时可以不写<version>标签。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.jingxuan</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
2、假设子工程需要使用A包
方式一:parent标签,子类POM文件编写如下:
//引用父工程J
<parent>
<groupId>com</groupId>
<artifactId>P</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
//子工程使用A包
<dependencies>
<dependency>
<groupId>com.jingxuan</groupId>
<artifactId>A</artifactId>
</dependency>
</dependencies>
方式二:import标签,子类POM文件编写如下:
//子工程使用A包,注意使用import标签时,不再使用<parent>标签
<dependencies>
<dependency>
<groupId>com.wentian</groupId>
<artifactId>A</artifactId>
//这里并没有使用<version>标签
</dependency>
</dependencies>
//表示将项目J的dependencyManagement拿到本POM中,不再继承parent
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com</groupId>
<artifactId>P</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type> //必须是type=pom
<scope>import</scope> //必须是scope=import
</dependency>
</dependencies>
</dependencyManagement>
Git是目前主流的一种代码托管技术。基本上大多数的公司都在使用Git进行协同开发。很多代码托管平台也是通过Git来实现的。
Git可以对代码进行版本控制以及分支管理等。它里面主要包含远程仓库,克隆,本地仓库,分支,提交,拉取等概念。其中远程仓库是指我们代码存储在服务器的地方,并且整个团队中所有人都可以正常访问。
克隆则是指从远程仓库克隆到本地的过程。本地仓库指的是开发人员从远程仓库克隆一份代码之后,保存在本地的代码,但是这个代码只有克隆的代码的开发人员可以看到。
开发过程中经常碰到一些冲突问题,比如同时修改公共类的公共方法,一人提交后,另外一人再提交就会报冲突的错误。
发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交其修改的部分。
注意的是修改本地冲突文件与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与其他提交人员交流沟通,消除冲突。
发生冲突,也可以使用命令。
1)使用git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
2)使用git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
3)使用git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中。
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所定义的版本。
当开发人员构建Maven项目时,它将基于项目pom.xml配置和命令行选项执行一组明确定义的任务。 此标准任务集创建了Maven构建生命周期。
Maven有三个内置的构建生命周期。
默认(default):处理项目的构建和部署。
清洁(clean):处理项目清理。
站点(site):处理项目站点文档的创建。
默认(default),清洁(clean)和站点(site)。在默认(default)的生命周期处理项目部署,将清洁(clean)的生命周期处理项目的清理,而站点(site)的生命周期处理项目站点文档的创建。
提交项目文件命令
git commit -a
含义:-a参数是指通过在命令行上加-a指示git提交已修改的所有被跟踪文件的新内容。
注意的是如果第一次提交新文件,可以在执行git commit -a命令之前先执行git add 命令。
新增文件的命令:git add file或者git add
提交文件的命令:git commit –m或者git commit –a
查看工作区状况:git status –s
拉取合并远程分支的操作:git fetch/git merge或者git pull
查看提交记录命令:git reflog
存储库是指存储所有jar和pom.xml文件的目录或位置。
Maven中有3种类型的存储库分别是:
1)本地存储库
当运行任何maven命令时Maven本地存储库都是由maven在本地系统中创建的。
2)中央储存库
Maven社区在Web上创建Maven中央存储库。
3)远程仓库
Maven远程存储库由其他第三方位于Web上。因此,需要在pom.xml文件中手动定义依赖项。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。