当前位置: 首页 > news >正文

使用命令行创建 Maven 项目

本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。

第一步:验证 Maven 和 Java 安装

在开始之前,我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。

验证 Maven 安装

打开命令行终端并输入以下命令:

mvn -v

您应该看到类似以下的输出:

Apache Maven 3.8.5 (b89d5959fcde851dcb1c8946e2987cb6db844df6)
Maven home: /usr/local/apache-maven-3.8.5
Java version: 21, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-21
验证 Java 安装

输入以下命令检查您的 Java 版本:

java -version

您应该看到类似以下的输出:

java version "21" 2023-09-21 LTS
Java(TM) SE Runtime Environment (build 21+36-LTS-1491)
Java HotSpot(TM) 64-Bit Server VM (build 21+36-LTS-1491, mixed mode, sharing)
第二步:创建简单的 Maven 项目

我们将使用 Maven 的 archetype:generate 目标来创建一个简单的项目。此目标基于预定义的原型生成项目结构。

在终端中运行以下命令:

mvn archetype:generate -DgroupId=com.companyname.projectname -DartifactId=simple-maven-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

此命令创建一个新 Maven 项目,参数如下:

  • groupId: 项目的组标识符,通常遵循反向域名约定。
  • artifactId: 项目的名称。
  • archetypeArtifactId: 指定要使用的原型。maven-archetype-quickstart 是一个适合初学者的简单原型。
  • interactiveMode: 如果设置为 false,则以批处理模式运行,不会提示用户输入。

执行命令后,您应该看到类似以下的输出:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.345 s
[INFO] Finished at: 2024-11-21T14:50:30+05:30
[INFO] ------------------------------------------------------------------------
第三步:导航到项目目录

切换到新创建的项目目录:

cd simple-maven-project
第四步:理解项目结构

生成的项目结构如下:

simple-maven-project
│   pom.xml
└───src├───main│   └───java│       └───com│           └───companyname│               └───projectname│                   └───App.java└───test└───java└───com└───companyname└───projectname└───AppTest.java

关键文件和目录

  • pom.xml: 项目对象模型文件,用于定义项目配置和依赖项。
  • src/main/java: 包含应用程序的源代码。
  • src/test/java: 包含应用程序的测试代码。
第五步:更新 pom.xml 文件

打开 pom.xml 文件并更新以下内容,以确保我们使用最新版本的 Java 和 JUnit:

<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.companyname.projectname</groupId><artifactId>simple-maven-project</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target></properties><dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.3</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.3</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.10.1</version><configuration><source>21</source><target>21</target></configuration></plugin></plugins></build>
</project>
第六步:构建项目

运行以下命令来构建项目:

mvn clean install

此命令将编译项目并运行任何测试。输出应指示构建成功:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.companyname.projectname.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.345 s
[INFO] Finished at: 2024-11-21T14:52:30+05:30
[INFO] ------------------------------------------------------------------------
第七步:运行应用程序

“Hello World!” 消息来自 Maven 原型创建的 App.java 文件。打开 src/main/java/com/companyname/projectname/App.java 文件,您将看到以下代码:

package com.companyname.projectname;/*** Hello world!**/
public class App 
{public static void main( String[] args ){System.out.println( "Hello World!" );}
}
打包并运行 JAR 文件

首先使用 Maven 将应用程序打包成 JAR 文件:

mvn package

此命令将在 target 目录中创建一个 JAR 文件。

导航到 target 目录并使用以下命令运行 JAR 文件:

java -jar target/simple-maven-project-1.0-SNAPSHOT.jar

您应该看到以下输出:

Hello World!

结论

在本教程中,我们通过命令行创建了一个简单的 Maven 项目。我们使用了 Maven 的 archetype:generate 目标生成项目结构,更新了 pom.xml 以使用最新版本的 Java 和 JUnit,构建了项目,并运行了打包后的 JAR 文件。Maven 简化了项目管理和依赖管理,是 Java 开发者的重要工具。

相关文章:

使用命令行创建 Maven 项目

本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。 第一步&#xff1a;验证 Maven 和 Java 安装 在开始之前&#xff0c;我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。 验证 Maven 安装 打开命令行终…...

JVM_栈详解一

1、栈的存储单位 **栈中存储什么&#xff1f;**&#xff0c; 每个线程都有自己的栈&#xff0c;栈中的数据都是以栈帧&#xff08;Stack Frame&#xff09;的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧&#xff08;Stack Frame&#xff09;。 栈帧是一个内存…...

Linux 金仓数据库安装和使用

文章目录 Linux 金仓数据库安装和简单使用 一、下载二、安装三、启动法1. 通用启动方式法2. 系统服务启动方式 四、测试五、DB管理工具1. 启动DB管理工具2. DB管理工具的常用功能 六、卸载 Linux 金仓数据库安装和简单使用 一、下载 打开官网 https://www.kingbase.com.cn/xzz…...

STM32笔记(串口IAP升级)

一、IAP简介 IAP&#xff08;In Application Programming&#xff09;即在应用编程&#xff0c; IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写&#xff0c;目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…...

C++网络编程:select IO多路复用及TCP服务器开发

C网络编程&#xff1a;使用select实现IO多路复用 一、什么是 IO 多路复用&#xff1f;二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用&#xff1f; 在网络编程中&#xff0c;最容易想到的并…...

部署 L2JMobius 天堂2芙蕾雅版本

首先下载所需要的服务器端 “L2J_Mobius.zip” 和芙蕾雅客户端&#xff08;三个压缩文件&#xff09;&#xff0c; 我的网盘下载&#xff1a;https://pan.baidu.com/s/1XdlcCFPvXnzfwFoVK7Sn7Q?pwdavd4 所有文件都在“芙蕾雅”目录下&#xff0c;也可以加入企鹅交流裙 87470…...

C#开发合集

用C#轻松搞定m3u8视频下载与合并 嘿&#xff0c;程序员们&#xff01;今天咱们来聊聊如何用C#写个小程序&#xff0c;轻松下载和合并m3u8视频文件。没错&#xff0c;就是那种分段的流媒体视频。准备好了吗&#xff1f;让我们开始吧&#xff01; 准备工作 在动手之前&#xf…...

鸿蒙面试 --- 性能优化

性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中&#xff0c;动画可以为用户界面增添生动、流畅的交互效果&#xff0c;提升用户对应用的好感度。然而&#xff0c;滥用动画也会导致应用性能下降&#xff0c;消耗过多的系统资源&#xff0c;…...

React的基础知识:Context

1. Context 在 React 中&#xff0c;Context 提供了一种通过组件树传递数据的方式&#xff0c;无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用&#xff0c;比如用户认证、主题、语言偏好等。 如何使用 Context 创建 Context&#xff1a;首先&#xff0c;…...

微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)

通过bdf号查看 -s &#xff08;bus&#xff09; lspci -s 03:00.0通过vendor id或者device id等设备查看 -d &#xff08;device&#xff09; lspci -d 15b3: #这里是vendor号&#xff0c;所以在前面 lspci -d :1021 #这里是设备号&#xff0c;所以要:在前vendorid和deviceid…...

【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】

5.1 Pod生命周期 Pod的生命周期指的是从Pod创建到终止的整个过程。它分为以下两种常见情况&#xff1a; 长期运行Pod&#xff1a; 例如运行HTTP服务的Pod&#xff0c;它在正常情况下会一直运行&#xff0c;但可以手动删除或终止。短期运行Pod&#xff1a; 例如执行计算任务的…...

c++的虚继承说明、案例、代码

虚继承的基本概念 在 C 中&#xff0c;虚继承主要用于解决多继承时可能出现的菱形继承问题。菱形继承是指一个类有两个&#xff08;或更多&#xff09;子类&#xff0c;而这两个子类又同时继承自一个共同的基类&#xff0c;当这些子类又被另一个类继承时&#xff0c;就形成了菱…...

小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你

说在前面 之前我们体验过妙享中心&#xff0c;里面就有互联互通的全部能力&#xff0c;现在有了小米电脑管家&#xff0c;老款的笔记本竟然用不了&#xff0c;也可以理解&#xff0c;毕竟老款笔记本做系统研发的时候没有预留适配的文件补丁&#xff0c;至于其他品牌的winPC小米…...

介绍SSD硬盘

SSD硬盘&#xff08;固态硬盘&#xff0c;Solid State Drive&#xff09;是一种利用闪存技术存储数据的存储设备&#xff0c;与传统的机械硬盘&#xff08;HDD&#xff09;不同&#xff0c;SSD没有任何活动部件&#xff0c;因此其性能和耐用性较为优越。以下是SSD硬盘的一些主要…...

CMAKE常用命令详解

NDK List基本用法 Get–获取列表中指定索引的元素 list(Get list_name index output_var)解释 list_name: 要操作集合的名称index: 要取得的元素下标output_var: 保存从集合中取得元素的结果 栗子 list(GET mylist 0 first_element) # 获取第一个元素APPEND–在列表末尾…...

Vue3的通灵之术Teleport

前言 近期Vue3更新了一些新的内容&#xff0c;我都还没有一个一个仔细去看&#xff0c;但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是&#xff1a;<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传…...

ue5第三人称闯关游戏学习(一)

视频资料38 - Compilers and Editors_哔哩哔哩_bilibili 上一个第一人称射击项目做完 接下来要更深入学习。 引入资产与C来创建第三人称闯关游戏 这次要引入的资产有两个分别是 Unreal Learning Kit&#xff1a;Game和stylized character kit: casual 01 不过有个比较麻…...

IIC 随机写+多次写 可以控制写几次

verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...

controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法&#xff1a;&#xff08;LoginUserRequest是一个用户类对象&#xff09; PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...

手搓人工智能-最优化算法(1)最速梯度下降法,及推导过程

“Men pass away, but their deeds abide.” 人终有一死&#xff0c;但是他们的业绩将永存。 ——奥古斯坦-路易柯西 目录 前言 简单函数求极值 复杂函数梯度法求极值 泰勒展开 梯度&#xff0c;Nabla算子 Cauchy-Schwarz不等式 梯度下降算法 算法流程 梯度下降法…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...