2.1 Maven工程约定目录结构
-
maven中约定的目录结构,约定是大家都遵循的一个规则。
-
每一个 maven 项目在磁盘中都是一个文件夹(项目-Hello)
Hello
|—src
|—|---main
|—|---|—java
|—|---|—resources
|—|---test
|—|---|—java
|—|---|—resources
|—pom.xml -
说明:
- Hello:根目录,也就是工程名
- src:源代码
- main:放主程序java代码和配置文件
- java:主程序的java源码
- resources:主程序的配置文件
- test:放测试程序代码和文件的
- java:测试程序的java源码
- resources:测试程序的配置文件
- main:放主程序java代码和配置文件
- pom.xml:Maven工程的核心配置文件。
2.1.1 第一个 maven工程
- 按照如下步骤,实现第一个 maven 项目,以 maven推荐的约定方式创建目录,类文件。
- 某个目录中创建文件夹 Hello,在 Hello中创建子目录 src
- 拷贝 pom.xml 到 Hello目录和 src是同级放置的。
- 进入 src目录,创建 main、test目录
- 进入 main目录,创建 java、resources目录。
- 进入 java 目录,创建 目录 com/mycode/
- 在 com/mycode/目录下创建 HelloMaven.java文件
package com.mycode;
public class HelloMaven {
public int add(int n1, int n2) {
return n1 + n2;
}
public static void main(String args[]){
HelloMaven hello = new HelloMaven();
int res = hello.add(10, 20);
System.out.println("10 + 20 = " + res);
}
}
- 进入到 Hello目录在,执行 mvn compile,编译 src/main 目录下的所有java文件。
疑问:
①为什么要下载?
maven工具执行的操作需要很多的插件(java类–jar文件)完成的
②下载了什么东西?
jar文件----叫做插件----插件是完成某些功能
③下载的东西存在哪?
默认仓库(本机仓库):
C:\Users\Jay.m2\repository
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar
https://repo.maven.apache.org/:中央仓库的地址
执行 mvn compile,结果是在项目的根目录下生成 target 目录(结果目录),maven 编译的 java 程序,最后的 calss 文件都放在 target 目录中 - 进入到 target/classes目录执行 java com.mycode.HelloMaven
设置本机存放资源的目录位置(设置本机仓库):
- 修改 maven 的配置文件,maven 安装目录/conf/settings.xml
先备份 settings.xml - 修改 <localRepository> 来指定你的目录(不要使用中文目录)
D:\Maven\maven_repository
2.2 仓库
2.2.1 仓库的概念
现在我们对 maven工程有一个大概的认识了,那现在思考一个问题, maven怎么就这么神奇,我们写完的工程交给他之后,他就能够自动帮我们管理,我们依赖的 jar 包它从哪儿获取呢? 有同学说已经安装了,在它的安装包里啊,大家可以看一下 maven下载下来才 8M,我们需要的 jar包有时候都几百兆甚至几个 G,它从哪儿弄去呢?其实, maven 有仓 库的概念。 在 Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。 Maven核心程序仅仅定义了自动化构建项目的生命周期,但具体的构建工作是由特定的构件完成的。而且为了提高构建的效率和构件复用, maven把所有的构件统一存储在某一个位置,这个位置就叫做仓库。
2.2.2 仓库存什么
仓库是存放东西的,Maven仓库存的是:
- Maven 的插件,插件也是一些 jar,这些,这些 jar 可以完成一定的功能。
- 我们自己开发项目的模块
- 第三方框架或工具的 jar 包