同步操作将从 dearHaoGeGe/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Maven即为项目对象模型(POM),它可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。
由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
由于Maven面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长,相比较Gradle,在之后的篇幅中会说明,欢迎大家关注微信公众号“Java精选”。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。
当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
参数依赖关系,属性如下:
groupId:依赖项的groupId。
artifactId:依赖项的artifactId。
version:依赖项的version。
scope:依赖项的适用范围。
compile:默认值,适用于所有阶段(开发、测试、部署、运行),jar会一直存在所有阶段。 provided:只在开发、测试阶段使用,目的是不让Servlet容器和自身本地仓库的jar包冲突。如servlet.jar。 runtime:只在运行时使用,如JDBC驱动,适用运行和测试阶段。 test:只在测试时使用,用于编译和运行测试代码,不会随项目发布。 system:类似provided,需要显式提供包含依赖的jar包,Maven不会在Repository中查找它。 import:用于一个对另一个的继承。它可以实现类似Maven Spring BOM(billofmaterials)的功能。
exclusions:排除项目中的依赖冲突时使用。
MOJO是一个Maven普通的旧Java对象。每个MOJO是Maven中的可执行目标,插件是一个或多个相关mojos的分发。
简单来说,MOJO是一个maven目标,扩展maven中没有的功能。
开发过程中经常碰到一些冲突问题,比如同时修改公共类的公共方法,一人提交后,另外一人再提交就会报冲突的错误。
发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交其修改的部分。
注意的是修改本地冲突文件与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与其他提交人员交流沟通,消除冲突。
发生冲突,也可以使用命令。
1)使用git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
2)使用git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
3)使用git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中。
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文件都需要手动创建。
当开发人员构建Maven项目时,它将基于项目pom.xml配置和命令行选项执行一组明确定义的任务。 此标准任务集创建了Maven构建生命周期。
Maven有三个内置的构建生命周期。
默认(default):处理项目的构建和部署。
清洁(clean):处理项目清理。
站点(site):处理项目站点文档的创建。
默认(default),清洁(clean)和站点(site)。在默认(default)的生命周期处理项目部署,将清洁(clean)的生命周期处理项目的清理,而站点(site)的生命周期处理项目站点文档的创建。
编译Maven项目需要自动从中央仓库(远程仓库、本地仓库)下载项目所需的依赖jar包,但是正常情况下,中央仓库服务在国外,下载速度缓慢,可以将其改为远程仓库下载所需依赖包,即阿里巴巴的镜像。
打开Maven解压目录下conf文件夹,修改settings.xml文件,更换成阿里镜像,提高下载依赖包速度。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
提交项目文件命令
git commit -a
含义:-a参数是指通过在命令行上加-a指示git提交已修改的所有被跟踪文件的新内容。
注意的是如果第一次提交新文件,可以在执行git commit -a命令之前先执行git add 命令。
1)mvn clean
清理输出目录默认target/
2)mvn clean compline
编译项目主代码,默认编译至target/classes目录下
3)mvn clean install
maven安装,将生成的JAR包文件复制到本地maven仓库中,其他项目可以直接使用这个JAR包
4)mvn clean test
maven测试,但实际执行的命令有:
clean:clean
resource:resources
compiler:compile
resources:testResources
compiler:testCompile
maven执行test前,先自动执行项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作
测试代码编译通过之后默认在target/test-calsses目录下生成二进制文件,随后执行surefile:test任务运行测试,并输出测试报告,显示运行多少次测试,失败成功等。
5)mvn celan package
maven打包,maven会在打包之前默认执行编译,测试等操作,打包成功之后默认输出在target/目录中
6)mvn help:system
打印出java系统属性和环境变量。
7)echo %MAVEN_HOME%:
查看maven安装路径。
8)mvn deploy
在整合或发布环境下执行,将终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
9)mvn
检查是否安装了maven。
10)mvn dependency:list
查看当前项目中的已解析依赖
11)mvn dependency:tree
查看当前项目的依赖树
12)mvn dependency:analyse
查看当前项目中使用未声明的依赖和已声明但未使用的依赖
src/main/java 存放项目的类文件(后缀.java文件,开发源代码)
src/main/resources 存放项目配置文件,若没有配置文件该目录可无,如Spring、Hibernate、MyBatis等框架配置文件
src/main/webapp 存放web项目资源文件(web项目需要) src/test/java 存放所有测试类文件(后缀.java文件,测试源代码)
src/test/resources 测试配置文件,若没有配置文件该目录可无
target 文件编译过程中生成的后缀.class文件、jar、war等
pom.xml maven项目核心配置文件,管理项目构建和依赖的Jar包
Maven负责项目的自动化构建,以编译为例,Maven若果自动进行编译,需要知道Java的源文件保存位置,通过这些规约,不用开发者手动指定位置,Maven就可以清晰的知道相关文件所在位置,从而完成自动编译。
遵循**“约定>>>配置>>>编码”**。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了工作量,也能防止编译出错。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。