在乐字节学习的第11天,学习了挺多知识,下面就是我今天在乐字节学习的知识。
Maven的安装配置和目录结构
Maven的安装配置
检查JDK的版本
JDK版本1.7及以上版本
配置Maven环境变量
解压后把Maven的根目录配置到系统环境变量中MAVEN_HOME,将bin目录配置到path变量中。
注:maven解压后存放的目录不要包含中文和空格
检查Maven是否安装成功
打开dos窗口,执行 mvn -v[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YwOdc7AK-1603960659116)(E:/文章/文章/images/maven_1.png)]
认识Maven目录结构
Maven项目目录结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DDFvx0y-1603960659120)(E:/文章/文章/images/maven_2.png)]
任务:手动创建一个Maven项目,并编译运行成功!
创建一个文件夹作为项目的根目录
在根目录中创建一个pom.xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxx</groupId>
<artifactId>maven01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven01</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Ps:标签定义解释
根目录下的第一个子元素 ModelVersion指定当前Pom模型的版本,对于Maven3来说,它只能是4.0.0 。指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0
groupId定义了项目属于哪个组, 这个组往往和项目所在的组织和公司存在关联。
比如: com.xxxx
artifactId 定义了当前Maven项目在组中唯一的ID。
Version X.X.X-里程碑
比如:1.0.0-SNAPSHOT
第一个X 大版本 有重大变革
第二个X 小版本 修复bug,增加功能
第三个X 更新
里程碑版本:
SNAPSHOT (快照,开发版)
alpha(内部测试)
beta(公开测试)
Release | RC( 发布版)
GA(正常版本)
使用name标签声明一个对于用户更为友好的项目名称,虽然不是必须的,但还是推荐为每个Pom声明name,以方便信息交流。
编写主函数
package com.xxxx.demo;
public class Hello{
public static void main(String[] args) {
System.out.println("hello maven");
}
}
cmd 下编译并运行
cmd下面,进入项目的根目录
1. 编译java文件
mvn compile
2. 执行main 方法
mvn exec:java -Dexec.mainClass=“com.xxxx.demo.Hello”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OIRr79Dq-1603960659123)(E:/文章/文章/images/maven_3.png)]
注:第一次下载会比较慢,要修改maven解压之后的conf目录下的settings.xml。
1.1.修改默认仓库位置
打开maven目录 -> conf -> settings.xml
添加仓库位置配置
<localRepository>F:/m2/repository</localRepository>
注:仓库位置改为自己本机的指定目录,"/"不要写反
1.2.更换阿里镜像,加快依赖下载
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
如果编译不成功,可能出现的问题
1. 不是使用管理员权限执行dos命令
2. JDK环境配置有问题,重装JDK
3. 代码编写时,类里面没设置包名(如果编译时类没加包名,执行时也不需要加包名)
Maven命令
作为开发利器的maven,为我们提供了十分丰富的命令,了解maven的命令行操作并熟练运用常见的maven命令还是十分必要的,即使譬如IDEA等工具给我提供了图形界面化工具,但其底层还是依靠maven命令来驱动的。
Maven的命令格式如下:
mvn [plugin-name]:[goal-name]
命令代表的含义:执行plugin-name
插件的goal-name
目标
常用命令
命令 | 描述 |
---|---|
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 | 将打包的文件发布到远程参考,提供其他人员进行下载依赖 |
mvn site | 生成项目相关信息的网站 |
mvn eclipse:eclipse | 将项目转化为Eclipse项目 |
mvn dependency:tree | 打印出项目的整个依赖树 |
mvn archetype:generate | 创建Maven的普通java项目 |
mvn tomcat7:run | 在tomcat容器中运行web应用 |
mvn jetty:run | 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用 |
注意:运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xml文件所在的目录。否则,必以通过参数来指定项目的目录。
命令参数
上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务。
-D 传入属性参数
例如:
mvn package -Dmaven.test.skip=true
以-D
开头,将maven.test.skip
的值设为true
,就是告诉maven打包的时候跳过单元测试。同理,mvn deploy-Dmaven.test.skip=true
代表部署项目并跳过单元测试。
-P 使用指定的Profile配置
比如项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,在pom.xml中的配置如下:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>qa</id>
<properties>
<env>qa</env>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
......
<build>
<filters>
<filter>config/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
......
</build>
profiles
定义了各个环境的变量id
,filters
中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile
中定义的值,resources
中是定义哪些目录下的文件会被配置文件中定义的变量替换。
通过maven可以实现按不同环境进行打包部署,例如:
mvn package -Pdev -Dmaven.test.skip=true
表示打包本地环境,并跳过单元测试