[Maven实战](3)Maven创建项目

简介:
前两篇文章我们已经大概了解并安装好了Maven。现在我们开始使用Maven创建项目,在此我们创建一个最简单的Hllo World项目。让我们对Maven有一个初步的认识,对于其中的诸多要点与疑点,以后文章中慢慢一起学习。所以这篇文章主要是让我们对Maven创建项目的流程有一个大概的了解。

1. Maven项目目录结构



2. 主代码

默认情况下项目主代码位于src/main/java目录下,遵循这个约定,创建该目录,然后在该目录下创建文件com/sjf/model/helloworld.java (com.sjf.model 是包名)。
   
   
package com.sjf.model;
 
 
public class HelloWorld {
 
public String sayHello(){
return "Welcome to Maven World";
}
public static void main(String[] args) {
System.out.println(new HelloWorld().sayHello());
}
}

注意:

绝大多数情况下,应该把项目主代码放到src/main/java目录(遵循Maven约定),而无需额外配置,Maven会自动搜索该目录找到项目主代码。


3. 编写POM

Maven的核心就是pom.xml文件。POM(Project Object Model 项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。

现在先为Hello World项目编写一个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.sjf.mavendemo</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>

代码第一行是XML头,指定了该XML文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间等。

根元素下的第一个元素是modelVersion指定了当前POM模型的版本,对于Maven2 和 Maven3 来说,它只能是4.0.0。

groupId,artifactId和version三个元素定义了一个项目基本的坐标,在Maven的世界中,任何jar,pom或者war都是以这些基本的坐标区分的。

groupId定义了项目属于哪个组,往往和项目所在的组织或公司相关联。比如说在googlecode上建立一个名为myapp的项目,那么groupId就为com.googlecode.myapp。在本实例中为com.sjf.mavendemo。

artifactId定义了当前Maven项目在族中唯一的ID,在本实例中为hello-world。

version指定了Hello World项目当前的版本,1.0SNAPSHOT。SNAPSHOT意思为快照,说明该项目还处于开发之中,是不稳定的版本。

name声明了一个对于用户更为友好的项目名称,不是必须的,但是推荐为每个POM声明name,以方便信息交流。

4. 编译

代码编写完成之后,使用Maven进行编译,在项目根目录下运行mvn compile会得到如下结果:




如果是第一次编译,会下载一些东西存储在.m2/repository下。


compile告诉Maven编译项目主代码,将项目主代码编译至target/classes目录下。默认情况下,Maven构建的所有输出都在target/目录中。


5. 测试代码

5.1 测试POM

默认情况下项目主代码位于src/test/java目录下,遵循这个约定,创建该目录,然后在该目录下创建文件com/sjf/model/helloworldTest.java (com.sjf.model 是包名)。

首先为helloworld项目添加一个JUnit依赖,修改项目的POM代码如下:
   
   
<?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.sjf.mavendemo</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>

代码中添加了dependencies元素,该元素下可以包含多个dependency元素以声明项目的依赖。这里添加了一个依赖(JUnit),groupId为junit,artifactId为junit,version为4.10。有了这段声明,Maven就能构自动下载junit-4.10.jar。哪到底从那下载呢?没有Maven之前,我们需要手动从JUnit官网上下载jar包。有了Maven之后,可以自动访问中央仓库(http://repo1.maven.org/maven2)下载需要的文件。

5.2 测试代码

配置了测试依赖,接着可以编写测试类了。
   
   
package com.sjf.model;
 
import org.junit.Assert;
import org.junit.Test;
 
 
public class HelloWorldTest {
@Test
public void testSayHello(){
Assert.assertEquals("Welcome to Maven World",new HelloWorld().sayHello());
}
}


5.3 测试

测试用例编写完毕之后就可以调用Maven执行测试。运行 mvn test:




test告诉Maven编译项目测试代码,将项目测试代码编译至target/test-classes目录下。


5.4 整体结构

6. 打包和运行

将项目进行编译和测试之后,下一个重要步骤就是打包(Package)。Hello World项目POM中没有指定打包类型,使用默认打包类型jar。使用如下简单执行命令进行打包:
    
    
mvn clean package
Maven会在打包之前执行编译,测试等操作。看到的jar:jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为 hello-world-1.0-SNAPSHOT.jar的文件。该文件也位于target/输出目录中。如果需要的话,就可以复制这个jar文件到其他项目的classpath中从而使用HelloWorld类。

但是,如何才能让其他的Maven项目直接引用这个jar呢?还需要一个安装步骤:
    
    
mvn clean install
13.png
图13

在打包之后,又执行了安装任务install:install。从输出可以看到该任务将项目输出的jar安装到了Maven本地仓库中,可以打开相应的文件夹看到Hello World项目的pom和jar。(C:\Users\Administrator\.m2\repository\com\sjf\mavendemo\hello-world\1.0-SNAPSHOT)

14.png
图14

之前说过JUnit的POM以及jar的下载的时候,只有构件被下载到本地仓库后,才能由所有Maven项目使用,所以只有将Hello World的构件安装到本地仓库之后,其他Maven项目才能使用它。

目录
相关文章
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
855 3
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
599 0
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
522 6
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
1744 0
|
缓存 架构师 Java
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
1078 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
1369 1
Maven——创建 Spring Boot项目
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
1403 8
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2987 3