Maven 命令手册,各位看官,请查收~
Maven依赖范围compile、provided、runtime、test和system的差异
scope 的默认值是compile,作用范围包括所在项目的测试、编译、运行、打包等生命周期。
test 表示被依赖项目仅仅参与测试相关的工作,在编译和运行时都不需要,只在编译测试代码或者运行测试代码的时候才能使用该依赖,比较典型的如junit。
provided依赖在编译和测试时需要,在运行时不需要。正因为运行时无效,可以防止和tomcat下jar冲突,因为servlet api被tomcat容器提供,就不需要maven再重复引入。由于运行时不需要所以provided范围依赖不会被打包。
runtime依赖在运行和测试的时候需要,但在编译的时候不需要。与compile相比,被依赖项目无需参与项目的编译。
比如jdbc的驱动包,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。由于运行时需要,所以runtime范围的依赖会被打包。
system范围依赖与provided类似,但是必须显式的提供一个位于本地系统中JAR文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。
马上要给毕业生做一个关于Maven的分享,先将知识点整理一个脑图
文档可以参考之前发的小文 Maven简介
Maven 是什么?
Maven 是 Apache 开源组织奉献的一个开源项目。
Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
Maven是一个采用纯Java编写的开源项目管理工具,Maven采用了Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在POM.xml文件中。
Maven是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,像编译是通过maven-compile-plugin实现的、测试是通过maven-surefire-plugin实现的,Maven也内置了很多插件,所以我们在项目进行编译、测试、打包的过程是没有感觉到。
进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。Maven插件实现了实际的构建功能。
maven使用
编程侠JavaMaven项目管理工具的介绍和使用
MAVEN中package、install、deploy 三者的区别:
mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
由上面的分析可知主要区别如下,
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
maven搭建项目 从基础到精通
maven 其实不就这点东西[灵光一闪]
#粤嵌星计划,粤嵌我来了#
昨天已经创建除了一个springboot项目,初始的项目就是一个空壳,只有一个启动类和pom.xml文件。这里有一个坑,在创建了项目之后,maven会帮你把你所选择的依赖下载下来,同样,maven默认的远程仓库也是在国外的,下载速度较慢,建议在maven文件夹的配置文件中修改远程仓库地址,可以换成阿里云的远程仓库,速度十分快。完成此工作后,依赖就不应该出现报红。接下来我们开始搭建项目结构,创建实体类,把三层架构搭建起来即可,然后在resources把前端代码写好。我们把部门模块完善即可。
Gradle和Maven终于完成了“死亡交叉“”了!
根据Stack Overflow的趋势,对比Gradle、Maven、sbt和Ant。
在2022年:Gradle第一,Maven位居第二,sbt位居第三,Ant 位居最后。
在2022年,Maven 和 Gradle 并驾齐驱,但Gradle小幅领先。 Gradle仅比2021年底的峰值低 8%,而Maven比 2015 年中的高点低 42%。
近5年来,Maven总体呈下降趋势,Gradle总体呈上升趋势,于2021年完成了死亡交叉。
了解更多:Stack Overflow Trends
Maven结构图#Maven#
今天升级了新版的 IDEA(2020.1.1),发现取消Maven的自动更新功能了。刚开始还不适应,以为配置出了什么问题。后来一查才知道,新版的IDEA为了防止POM更新时,Maven自动导包时卡死的问题,取消了自动导包机制。大家需要通过导入按钮或者快捷键,手动更新[泪奔][抠鼻]。
刚开始肯定有点不适应的,慢慢习惯就好了,哈哈。之前老版本自动导包,速度快的话很爽,要是慢的话就卡,也是纠结。估计 IDEA 也是权衡了好久才做出这样的改变吧。
亲,你的IDEA升级了吗,发现这个问题了不[呲牙][呲牙]
澳大利亚经济学家兼Maven Data创始人兼董事总经理Elisa Choy和全球移民专家、悉尼大学副教授Anna Boucher进行了一项研究,衡量了中国学生对澳大利亚和其他竞争国家教育的看法。调查发现,中国学生对于澳大利亚的教育情绪总体上是积极的。澳大利亚紧随其后的是加拿大,然后是美国和英国。
VS、Delphi、Jbuilder、eclipse、VS code都用过。idea能在java里秀儿,那是因为微软懒。vs宇宙第一ide,地球上的你们随便排。
开发java的话,还是eclipse最优秀。idea是为了反对而反对,去掉workspace概念,各种骚操作,至今还是缺乏很多功能。
无法查看当前应用源码挂载了哪些Maven jar,Maven update等功能也不好用。说到底idea还是一个editor,超强editor,还是能算完全体的IDE。
其他编程语言,统一用vscode。其实power builder才是前无古人后无来者的宇宙第一IDE 当年的编程比现在快20倍。
Spring官方持续加强向Gradle偏移。
继Spring/Spring Boot的源码全面从Maven向Gradle迁移后。
在知名的spring initializr网站,Spring Boot在应用开发生成的页面也将默认使用的编译工具也从Maven变成了Gradle。
我们在访问:https://start.spring.io 会看到这个明显的变化。
是时候了解学习一下Gradle了!!
java maven项目快速搭建 之添加用户
gradle官网对比了gradle5.4和maven3.6的性能,以项目Apache Commons Lang library作为测试项目。gradle确实快了不少,工作完成了都去休息去了,maven还在跑。见编辑过的附图。
本来觉得maven那边加个-T应该会有优势,看了他们其他的对比,觉得还是这个方法帮助还是不够。
#教育听我说#
#IDEA#
解决Maven项目不识别。
eclipse文件搜索,通常在工程中,我们查找文件通过快捷键Ctr+Shift+R ,可以搜索本工程下的文件。在通过maven或gradle等构件工具引入的第三依赖,想要搜索所有其的文件可以通过Ctr+Shift+T来完成。
例如通过maven构建的spring security项目。查找spring security的一个类FilterSecurityInterceptor,通过快捷键Ctr+Shift+T,然后输入FilterSecurityInterceptor即可。