掌握maven
在Maven选项下的Runner中配置VM Options为“-DarchetypeCatalog=internal”,这样如果本地已有相关插件就不会在联网下载了。
如何使用骨架创建java项目:
勾选骨架-->选择 maven-archetype-quickstart
使用骨架创建java项目与不使用骨架创建的区别:
main目录下没有resource文件夹
会自动帮我们创建一个java类,类里有个main方法
pom.xml除了groupId\artifactId\version以外,还有其他的。
src下没有test目录
如何使用骨架创建web项目:
勾选骨架-->选择 maven-archetype-webapp
pom.xml会多出很多没用的东西(name/properties/build)
pom.xml 相关:
<packaging></packaging>
war web工程-war打包方式
jar java工程-jar打包方式(不指定时-默认)
pom 聚合项目打包方式
<dependency> jar包坐标
<build> 使用的maven的插件
下面的可以去掉,一般不需要:
<name>项目名称 <url>访问案例 <properties>pom文件中的变量信息
项目目录main添加java目录 mark as source directory让其合法 编写Java代码
项目目录main添加resources目录 mark as resource directory让其合法
此时web工程的目录结构以及pom.xml文件已经修改完毕,可以使用了。
设置jdk编译版本为1.8:
pom.xml添加编译插件
<build>
<plugins>
<groupId>maven插件
<artifactId>编译插件
<configuration>
<source>版本号
<target>版本号
<encoding>UTF-8
以上就把maven的编译插件改为了1.8
代码报红–>添加jar包:
pom.xml添加如下,输入jar包关键字后idea会自动提醒
<dependency>
<groupId>公司组织的名称(如果是域名就要反转倒序)
<artifactId>项目名
<version>版本号
如果不知道填写什么,去https://mvnrepository.com/ 中搜索后拷贝即可,此时报红的代码alt+enter
–>import class导包即可消红。
web.xml要配置servlet的访问路径,具体在此不赘述了。
maven生命周期
maven的compile指令用来将.java文件编译为.class文件到target/classes目录。
maven的test指令用来执行src/test/java下的单元测试类。注意:
在pom.xml要添加单元测试的依赖包
<dependencies>
<dependency>
<groupId>junit
<artifactId>junit
<version>4.12
如果是打印中文却输出的是乱码,maven–runner–vm options 添加 : -Dfile encoding=gbk
maven的clean指令用来清除target目录及内容。
maven的package指令能将java工程打包为jar包,将web 工程打包成war包。会被存放在target目录下。
maven的install指令能将当前项目安装到本地仓库里,怎么去找到呢,借助坐标(=maven路径下的位置)。
Maven 指令的生命周期:maven对项目的构建分为三套独立的生命周期,IDEA中的maven是默认的生命周期指令。
注意:当生命周期中的操作所对应指令执行时,之前的生命周期操作指令也会执行。(即运行package指令,会将其上的命令(不算clean)都执行了。)
maven概念模型图:
maven依赖范围:
总结:
默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )(target/lib目录可以看到有相应jar包)
servlet-api 、 jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
junit ----- test (测试有效)
依赖范围由强到弱的顺序是: compile>provided>runtime>test
聚合和继承
聚合和继承通常是结合使用的,聚合不等同于继承,它们的作用是不同的。聚合是将多个模块的工程汇聚到一起,而继承则是指明某个模块工程要继承另一个模块功能/jar包/数据。
pom表示的就是聚合工程
依赖版本锁定:
在父工程的pom.xml添加 dependencyManagement (依赖版本锁定),不会在父工程中添加依赖,只是设置依赖的版本.
<dependencies>
<dependency>
拷贝过来
就可以不用在子工程的pom.xml加上版本了
当你修改了子项目,一定要重新install。
最佳写法—版本号写在properties变量当中,方便修改:
如:
<properties>设置文件中的变量信息
<servlet.version>2.5
依赖范围对依赖传递的影响:
略
依赖调节原则:
深度小的优先,相等的话,按声明顺序优先。