Maven笔记
1.简要说明
学习地址:https://www.bilibili.com/video/BV1Fz4y167p5
帮助下载jar包,加入插件,防止IDEA和Eclipse目录结构不同导致的问题。
主要通过在
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId> 这个是公司及项目
<artifactId>spring-webmvc</artifactId> 这个是项目下的模块
<version>5.3.9</version> 这个是版本号
</dependency>
上述内容可以从https://mvnrepository.com/网站去搜索(百度搜索maven,第一个一般就是)
常用目录结构:
${basedir}
|-- pom.xml
|-- src
| |-- main
| | -- java
|| com.xxx.xxx 项目源码
| | `-- resources
|| 项目配置文件 .xml等
| | `-- filters
| | `-- test
| | `-- java
| | `-- resources
| | `-- filters
-
src/main/java 项目的源代码所在的目录
-
src/main/resources 项目的资源文件所在的目录
-
src/main/filters 项目的资源过滤文件所在的目录
-
src/main/webapp 如果是web项目,则该目录是web应用源代码所在的目录,比如html文件和web.xml等都在该目录下。
-
src/test/java 测试代码所在的目录
-
src/test/resources 测试相关的资源文件所在的目录
-
src/test/filters 测试相关的资源过滤文件所在的目录
2.安装教程
-
准备工作:安装好java,然后下载maven.
安装教程可以参考这个:https://blog.csdn.net/a805814077/article/details/100545928
-
将下载好的压缩文件解压,然后将其bin目录加入系统环境变量path中
(可以新建MAVEN_HOME=D:Devmavenapache-maven-3.6.3,然后path中添加%MAVEN_HOME%in)(cmd命令行中,可以通过echo %PATH% 查看当前的path值)
然后通过mvn -v查看maven的版本号,用以验证maven是否配置成功.
-
然后配置mvn根目录下conf目录下的setting文件
配置一:更改默认仓库储存位置:
<localRepository>/path/to/local/repo</localRepository>
<!--如保存在F盘的repository目录下,注意这里是正斜杠-->
<localRepository>F:/repository</localRepository>
配置二:更改下载服务器地址(外国下的慢,改成阿里云服务器)(注意要放在两个mirrors标签之间)
这两个仓库只用选一个(根据大家反馈建议使用第一个,第二个在有的版本可能会出现warning),将其内容复制到两个mirrors标签之间
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
或者
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置三:配置jdk版本(应该是可选的,不配也能用)(注意夹在两个profiles标签之间(我这里使用的为jdk8))
<!-- java版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
配置完成,在命令行输入mvn help:system测试,看到下载链接里面是ailiyun的链接表示配置成功
3.POM文件中标签介绍
IDEA等IDE会自动在POM中写上常用的标签,我们只需要在
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId> 这个是公司及项目
<artifactId>spring-webmvc</artifactId> 这个是项目下的模块
<version>5.3.9</version> 这个是版本号
</dependency>
POM内标签详细介绍:https://www.runoob.com/maven/maven-pom.html(底部有POM 标签大全详解)
4.Maven命令
Maven命令格式: mvn [plugin-name] : [goal-name] //即执行plugin-name插件的goal-name目标
运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xm1文件所在的目录。否则,必以通过参数来指定项目的目录。
同时可以用 -D 传入属性参数, 如:
mvn package -Dmaven.test.skip=true //让maven打包时跳过单元测试
同时可以用 -P 指定Profile配置(对开发,测试,预发,正式等不同环境,在pom中有不同配置), 如:
mvn package -Pdev -Dmaven.test.skip=true//让profile的id标签为dev的环境打包,并跳过单元测试
- mvn compile //在mvn的根目录下输入,会编译java文件
- mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello" 执行根目录下,此位置的java文件的main方法
- mvn -version 显示版本信息
- mvn clean 清理项目生产的临时文件,一般是模块下的target目录
- mvn compile 编译源代码,一般编译模块下的src/main/java目录
- mvn package 项目打包工具会在模块下的target目录生成jar或war等文件
- mvn test 测试命令,或执行src/test/java/下junit的测试用例.
- mvn install 将打包的jar/war文件复制到你的本地仓库中供其他模块使用
- mvn deploy 将打包的文件发布到远程参考提供其他人员进行下载依赖
- myn site 生成项目相关信息的网站
- mvn eclipse:eclipse 将项目转化为Eclipse项目
- mvn dependency:tree 打印出项目的整个依赖树
- mvn archetype:generate 创建Maven的普通java项目
- mvn tomcat7:run 在tomcat容器中运行web应用
- mvn jetty:run 调用letty插件的Run目标在lettyServlet容器中启动web应用
5.IDEA中使用Maven
- 配置环境:file->New Project Setting(全局设置,setting只对当前项目有效)->setting for new Project。然后在打开的对话框找到maven(在Build,execution,Deployment的Build Tools下)。配置 maven home path为你的maven根目录,然后配置User settings file 为你的maven的setting。然后local repository为你的本地仓库地址(一般会根据setting自动更新)记得给后面都打上对号。
- 创建Maven项目:新建一个maven项目,然后根据模板(creat那一句选上,普通java项目为quickstart web项目为webapp)创建,然后给不同的目录创建不同的属性(mark directory as)
- 运行Maven项目:一般的编译运行,可以通过右侧maven的选项直接用,复杂的可以在运行那儿add configurations 然后点加号,然后选择maven,然后输入maven命令如 compile。(jetty:run)(tomcat7:run)
pom中还要确定用的java版本等内容(改为jdk8),webapp下很多插件好像用不到(可以把
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
jar包如mysql放到
Tomcat放到
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path> <!-- 项目访问路径 本例:localhost:9090, 如果配置的aa,则访问路径为localhost:9090/aa -->
<port>9090</port>
<uriEncoding>UTF-8</uriEncoding><!-- 非必需项 -->
</configuration>
</plugin>
多个模块互相依赖
一个项目有多个模块,让一个模块可以import另一个模块的方法:在该pom文件加以下内容,其中groupID等内容可以直接去要引入模块对应的pom文件直接复制,我这个是mavenWebDemo模块。
<dependency>
<groupId>org.example</groupId>
<artifactId>mavenWebDemo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
此时不会报错,但是不能运行,运行需要对各个模块,新建maven命令install(即对每一个模块,运行处选择添加,然后点加号,点maven,输入install命令),然后对每个maven命令执行一下,最后在启动服务器。(要先install 父项目,然后才能安装子工程,不然的话安装会失败的)(该项目结构是一个父项目,父项目右键新建了3个模块)
Maven的打包操作
-
首先建好对应目录结构,写好代码(在resources目录下,对应不同的应用场景有不同的配置,如开发用的dev目录,下面是数据库配置等。再如测试用的test目录,下面也有数据库及配置)
-
配置打包环境即将
放在 下,一般放在 上方 <profiles> <profile> <id>dev</id> <properties> <env>dev</env> 这个值一般和各个环境资源目录对应文件名一致 </properties> <activation> <activeByDefault>true</activeByDefault> 默认打包是这个环境 </activation> </profile> <profile> <id>test</id> <properties> <env>test</env> 这个值一般和对应文件名一致 </properties> </profile> </profiles>
-
在
标签下放 标签 <resources> <resource> <directory>src/main/resources/${env}</directory> 确定是哪个资源目录 </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> </resources>
-
添加maven命令,在command line输入:
clean compile package -Pdev -Dmaven.test.skip=true
对dev环境进行打包 -P指定打包环境dev -D输入参数,该参数代表跳过对测试环境的打包