「Web开发-互联网架构」 Maven

Posted by Dawn-K's Blog on June 30, 2020

Maven

[toc]

参考资料 另一个参考资料

介绍

Maven 是一个项目管理工具, 可以对 Java 项目进行构建、依赖管理.

Maven 大概的原理是管理一个本地仓库, 如果本地仓库里没有所需的包, 就到远程仓库去下载

并且能有效减少项目的体积, 也就是把代码和需要的包隔离开, 只需要对包的配置文件(pom.xml)进行版本控制即可

安装

Maven 不需要安装, 从官网下载下来之后, 解压到文件夹, 配置环境变量就可以使用了. 下载地址 推荐下载3.5.4的bin版本

配置环境变量

新建环境变量 MAVEN_HOME : ‘D:\apache-maven-3.5.4’ 然后加到Path : ‘%MAVEN_HOME%\bin’

# 测试
mvn -version

修改配置文件

打开 MAVEN_HOME\conf\setting.xml

  1. 修改仓库地址

找到其以 <!-- localRepository 开头的注释, 在这条注释下面 ` D:/.m2/repository` 标签中的路径是作为maven的仓库用以存放所需的包的. 后期会不断膨胀, 所以不要放在C盘.

  1. 修改下载源

<mirrors></mirrors> 之间加入

1
2
3
4
5
6
7
<!-- 注,这个是mirror,也要添加的,即mirrors标签之间会有多个mirror标签 -->
<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

新建项目

使用idea, 新建Maven工程

关于脚手架, 建议选取 maven-archetype-quickstart 然后设置中选中maven 的路径(会自动根据 .setting.xml 寻找到配置并自动导入)

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!--    默认版本-->
<modelVersion>4.0.0</modelVersion>

<!--    项目配置 -->
<groupId>com.neu.edu</groupId>
<artifactId>his-system</artifactId>
<version>1.0.0</version>

<!--    项目名称-->
<name>his-system</name>

<!--    项目将来的网址,这里暂时用不到-->
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<!--    自己加的,描述项目-->
<description>HIS云平台管理系统</description>

<!--    属性配置-->
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <!-- 定义变量,方便下文使用 -->
    <mysql.version>8.0.20</mysql.version>
</properties>

<!-- 依赖 -->
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <!--生命周期-->
        <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 引用上文的变量,这样修改时只需要在properties中修改就可以了,不需要来回翻 dependency -->
        <version>${mysql.version}</version>
    </dependency>
</dependencies>

<!--    构建-->
<build>

</build>

依赖范围

一般就是 compiler 和 test. compile : 编译, 测试, 运行 test : 测试 provided: 编译, 测试(一般是web中使用, 避免和容器提供的环境冲突) runtime : 测试, 运行 system : 和provided相似, 但是慎用, 容易造成不可移植的问题(就是用本地的依赖, 远程仓库中没有的情况) import : 极少使用, 用于在模块很多时, 继承依赖的版本号

动作

  • clean 清空target
  • compile 编译
  • package 编译, 测试并打包(jar, 存放在target中)
  • test 单元测试(可通过’Toggle ‘Skip tests’ Model’ 按钮来跳过单元测试)
  • install 上传到本地仓库(会根据包名自动生成路径)
  • deploy 上传到远程仓库

单元测试

创建好 maven 项目之后, 会自动创建单元测试

1
2
3
4
5
// 单元测试的函数必须有@Test注解,并且返回值一定是void
@Test
public void log(){

}

常见问题

中文乱码

maven 输出乱码: 在 steeing -> Build Tools -> Maven -> Runner 中新建 变量

在pom.xml文件中出现红色

1
Could not transfer artifact org.springframework.boot:spring-boot-starter-parent

这时候可以去左上角的 File->setting 里面, 将maven设置为自己的版本(偶尔会切换成idea自带的版本)

下载失败

Jar包下载失败 .lastUpdate可能会导致下不下来

main无法运行(没有绿色箭头)

核心思路: 将 src/main/java 设置为源代码 将 src/test/java 设置为测试代码

在 project Stucture 中或者在文件夹右键上, 将上述两个文件夹修改正确

规范

src/main/resources 中存放静态的配置文件 将 src/main/java 存放源代码 将 src/test/java 存放测试代码

src/main/java 中, 存放的都是包, 包中包含java代码