bin:保存可执行性命令,因此要将其路径添加到PATH中,以便在命令行中使用maven命令。
boot:只包含plexus-classworlds-2.5.2.jar,maven用其加载自己的类库。
conf:保存maven配置文件的目录,setting.xml可用于配置Maven。
lib:该目录包含了所有maven运行时需要的类库。
其余为说明性文档。
localRepository:用于设置Maven的本地资源库路径,默认保存在用户Home目录的.m2/repository下
offline:设置为false时,当maven找不到插件、依赖库时,会自动从网络下载
proxies:设置maven访问网络的代理服务器
interactiveMode:设置交互模式,如果为false,maven将使用默认值
方式一:
mvn : -D<属性名>=<属性值>...
plugin-prefix:插件名称
goal:指定该插件所包含的指定目标
可以设置多个属性名、属性值对
方式二:
mvn :::
plugin-group-id、plugin-artifact-id、plugin-version称为maven的坐标,可唯一的确定某个插件
mvn archetype:generate -D interactiveMode=false -D groupId=开发者域名 -D artifactId=项目名 -D package=项目打包的类型
生成的maven项目结构如下:
源代码应该位于src/main/java下,资源文件(配置文件)应该位于src/main/resources下,测试代码位于src/test下,编译生成的class文件位于target下
进入到pom.xml文件所在路径,执行以下命令
mvn compile
mvn exec:java -D exec.mainClass="编译后含有主函数的类文件的路径"
下面给出个实例:
1、创建项目
项目的位置请在执行日记中查找
2、进入项目目录
3、编译项目
编译后在target的classes目录下可以找到编译后的类文件,就本例来说,编译后的类文件位于C:\Users\lzy\demo\target\classes\jar
4、执行项目
mainClass参数值为target\classes下的包名+类文件名,本例为jar.App
遇到的异常:
1、No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
环境变量没有配置JAVA_HOME对象
2、Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project demo: An exception occured while executing the Java class. App
mvn exec:java -D exec.mainClass路径错了
生命周期是指maven构建项目时的多个有序阶段(phase)
可以使用以下命令通知maven执行生命周期中的一个或是多个阶段
mvn
maven包括三个生命周期,这里只介绍两个:
1、clean:清除target目录下的jar文件
2、default:包括如下生命周期:
1、compile:编译
2、test:运行测试代码
3、package:项目打包
4、install:安装到本地仓库(存放jar包的文件,通过localRepository设置)
5、deploy:部署到远程仓库(通过pom.xml文件中的repositories配置)
上述生命周期按顺序执行,如果我们使用mvn install,将先后执行compile、test、package、install生命周期
pom.xml是一种项目对象模型的描述文件,其中定义了项目需要的依赖,打包成jar、war文件时需要遵循的规则等等,每个maven项目的pom.xml都有一个上级pom.xml文件(其中定义了大量默认配置,如果想要改变这些默认配置,只需在本项目pom.xml文件中定义相应元素进行覆盖即可),上级pom.xml中的配置信息会合并到本项目的pom.xml文件中,类似于类的继承,这被称为依赖传递,springboot中的起步依赖就利用了这点
pom.xml中的元素包括:
compile:默认值,编译、测试、打包时都需要该依赖
provide:运行时需要该依赖
runtime:测试、运行时需要,打包时会包含该依赖
test:该依赖只用于测试阶段
system:与provide相似,但该依赖必须是操作系统自带的
import:表示该依赖继承父POM文件中
maven通过dependency中的groupId、artifactId、packaging(项目的打包类型,可选)、version(可选)来确定一个依赖
在我看来,使用maven最大的便利之处是,只要我们在pom.xml中配置依赖,maven就可以自动下载我们需要的依赖(若本地资源库没有该依赖)。