maven
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven
存在意义
- 项目庞大,不适合使用package来划分模块,借助于Maven将一个项目拆分成多个工程。
- 原本jar需要复制到
WEB-INF/lib
工程臃肿,借助于Maven将jar包保存在”仓库”中,有需要”引用”文件接口。 - 一个jar包依赖的其他jar包需要手动加入项目,借助于Maven将被依赖的jar包导入进来。
运行时环境:其实是jar包的引用,并没有把jar包复制进工程。
四大特性
依赖管理系统
在Java中可以用groupId
,artifactId
,version
组成Coordination
(坐标)唯一标识一个依赖。
1 | <dependency> |
groupId:定义当前目录隶属的实际项目(jar包所在仓库路径)
artifactId:定义实际项目中的一个Maven模块-项目名,推荐实际项目名称作为artifactId前缀
version:Maven项目当前所处版本
多模块构建
一致的项目结构
解决不同idea不同的目录结构
一致的构建模型和插件机制
Maven安装与配置
下载地址
https://maven.apache.org/download.cgi#
配置环境变量
MAVEN_HOME
D:\apache-maven-3.8.4\bin
%MAVEN_HOME%
目录结构
目录 | 描述 |
---|---|
${basedir} |
存放pom.xml 和所有子目录。 |
${basedir}/src/main/java |
java源代码 |
${basedir}/src/main/resources |
项目的资源,如property 文件 |
${basedir}/src/test/java |
项目的测试类,如JUnit 文件 |
${basedir}/src/test/resources |
测试使用的资源 |
修改settings.xml
修改默认仓库位置
打开maven目录 –>conf/settings.xml
1 | <!-- localRepository |
位置改为自己本机指定目录,
/
不要写反。
1 | <localRepository>D:/apache-maven-3.8.4/repo</localRepository> |
修改仓库源
https://developer.aliyun.com/mvn/guide
1 | <mirror> |
编译执行
进入项目的根目录
编译java文件 mvn xxx
执行main方法
1 | mvn exec:java -Dexec.mainClass="com.xxx.xxx.TextDemo(类名)" |
报错:
- 不是使用管理员权限
- JDK环境配置问题
- 包名类名路径错误
Maven命令
命令 | 描述 |
---|---|
mvn -v, –version | 显示版本信息 |
mvn clean | 清除产生的项目 |
mvn package | 打包 |
mvn test | 运行测试 |
mvn compile | 编译源代码 |
mvn install | 在本地 Repository 中安装 jar |
mvn deploy | 将打包文件发布到远程参考 |
mvn site | 生成项目相关信息的网站 |
mvn eclipse:eclipse | 生成eclipse项目,idea同理 |
mvn dependency:tree | 打印整个依赖树 |
IDEA编辑器集成Maven环境
设置配置文件路径和本地仓库路径
Maven创建项目
创建Java项目
设置项目名称和路径
设置目录结构
编译项目
打包成jar包
创建web项目
创建项目
模板选择webapp
修改jdk版本
1 | <properties> |
设置单元测试版本为4.12
1 | <dependencies> |
删除pluginManagement标签
<pluginManagement...>
设置web插件
jetty
1 | <!--jetty--> |
tomcat7
1 | <plugin> |
启动项目
或者注释<connector>
在command line
中填写jetty:run -Djetty.port=8899
mvnrepository
常用插件
扫描漏洞类插件
1 | <plugins> |
执行
mvn verify
,结果如下:
安装第三方JAR
1 | mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> |
<path-to-file>
为你jar包所在的路径<group-id>
为grouId号,与<artifact-id>
组成唯一识别你jar包的坐标,当不在公共资源jar包中,自己自定义的jar时,可以自定义groupId号<artifact-id>
为artifactId号,与<group-id>
组成唯一识别你jar包的坐标,当不在公共资源jar包中,自己自定义的jar时,可以自定义artifactId号<version>
jar包版本号,也可以自定义<packaging>
包的后缀,一般都是jar
常见问题
maven缺失ojdbc6解决方案
在cmd命令行输入以下命令
1 | mvn install:install-file -Dfile=D:/MavenRepo/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -DgeneratePom=true |
IDEA中maven原型加载不出来
解决方法来自IDEA的不加载archetype list的问题和Maven 的41种骨架功能介绍
1 | Setting---->Build Tools → Maven → Importing, set VM options for importer to -Xmx1024m (默认的是-Xmx512m ) |
删除C:\Users\DropAnn\AppData\Local\JetBrains\IntelliJIdea2021.2\Maven\Indices
下面的文件夹
然后重启IDEA。