Maven
简介:
-
Maven
翻译为"专家"、"内行",是Apache
下的一个纯Java
开发的开源项目。基于项目对象模型(缩写:POM
)概念,Maven
利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 -
Maven
是一个项目管理工具,可以对Java
项目进行构建、依赖管理。 -
Maven
也可被用于构建和管理各种项目,例如C#
,Ruby
,Scala
和其他语言编写的项目。Maven
曾是Jakarta
项目的子项目,现为由Apache
软件基金会主持的独立Apache
项目。
Maven
功能:
- 构建、文档生成、报告、依赖、
SCMs
、发布、分发、邮件列表
Maven
目录结构:
-
Maven
提倡使用一个共同的标准目录结构,Maven
使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 | 作用 |
---|---|
${basedir} |
存放 pom.xml 和所有子目录 |
${basedir}/src/main/java |
项目的 java 源代码所在的目录 |
${basedir}/src/main/resources |
项目的资源文件所在的目录,例如:propert 文件 |
${basedir}/src/test/java |
测试代码所在的目录,例如:JUnit 代码 |
${basedir}/src/test/resources |
测试相关的资源文件所在的目录 |
${basedir}/src/main/webapp/WEB-INF |
web 应用文件目录,web 项目的信息,比如存放 web.xml 、本地图片、jsp 视图页面 |
${basedir}/target |
打包输出目录 |
${basedir}/target/classes |
编译输出目录 |
${basedir}/target/test-classes |
测试编译输出目录 |
Test.java |
Maven 只会自动运行符合该命名规则的测试类 |
~/.m2/repository |
Maven 默认的本地仓库目录位置 |
Maven POM
简介:POM
标签详解
-
POM
(Project Object Model
,项目对象模型 ) 是Maven
工程的基本工作单元,是一个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>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,
maven 会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个 groupId 下面可能多个项目,就是靠 artifactId 来区分的 -->
<artifactId>maven01</artifactId>
<!-- 版本号 -->
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--项目引入插件所需要的额外依赖包 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 所有
POM
文件都需要project
元素和三个必需字段:groupId
,artifactId
,version
标签 | 描述 |
---|---|
project |
工程的根标签 |
groupId |
这是工程组的标识。组织或者项目中通常是 唯一标识 |
artifactId |
这是工程的标识。它通常是工程的名称。可以是多个 |
version |
这是工程的版本号。 |
- 在
artifact
的仓库中,用version
来区分不同的版本。例如:
com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1
创建项目及编译测试
-
Hello.java
文件目录
- 测试代码
package com.xxx.demo;
public class Hello {
public static void main(String[] args) {
System.out.println("hello maven");
}
}
- 编译:
mvn compile
注:需要在项目的根目下执行D:\test\maven01>mvn compile
- 启动测试:
CMD
命令行执行main
方法
mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello"
D:\test\maven01>mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello"
- 显示成功界面
hello maven [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS # 编译成功 [INFO] ------------------------------------------------------------------------ [INFO] Total time: 17.393 s [INFO] Finished at: 2021-08-21T15:23:20+08:00 [INFO] ------------------------------------------------------------------------
如果编译不成功,可能存在如下问题:
- 未使用管理员权限执行命令
-
JDK
环境配置问题,重装JDK
- 代码编写时,类里面设置包名(如果编译时类没有加包名,执行时也不需加包名)
网友评论