章十五、Maven —— Maven 简介、Maven 开发环境搭建、命令、打包案例

一、 Maven 简介


        Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系(在A.jar文件中用到了B.jar)、完成项目的编译(.java -> .class)、测试、打包(源代码 -> .jar文件)和发布等工作。

  pom(Project Object Model) 项目对象模型

Maven 管理的项目的根目录下都有一个 pom.xml 文件。

pom.xml 文件指示 Maven 如何工作。

在 pom.xml 文件中配置项目基本信息以及项目构建信息等。比如:项目坐标、项目依赖的 jar、插件、编译选项等。

一旦在 pom.xml 文件中配置了所依赖的 jar,Maven 会自动从构件仓库中下载相应的构件。

  坐标

Maven 给每个 jar 定义了唯一的标志,这个在 Maven 中叫做项目的坐标,通过这个坐标可以找到你需要用到的任何版本的 jar 包。

groupId、artifactId、packaging、version 的组合被称为项目的坐标,它们形成了项目的唯一标识,Maven 通过坐标来精确定位构件。其中 groupId、artifactId、version 是必须的,且这三项的值必须唯一,packaging 是可选的(默认为 jar)。

  仓库

中央仓库全球共享,先将 jar 从中央仓库下载到本地仓库,然后在项目中引用本地仓库的 jar

二、 Maven 开发环境搭建


●  前提

1、安装 jdk

2、Maven 工作时需要通过网络下载各种插件以完成任务,因此应保证网络的通畅。

3、下载 Maven 服务器:官网

点击Download 

点击下载二进制的 apache-maven -3.9.6-bin.zip (演示以apache-maven -3.6.0-bin.zip 为示)

4、解压,配置系统环境变量(path)

5、配置成功后在 cmd中 输入命令mvn -version 查看版本如下图:

表示 Maven 环境配置成功。

6、配置本地仓库地址

新建一个名叫 localRepository 文件夹,用于存放jar文件的目录

在 Maven 的服务器解压的文件中找到 conf 文件夹下的 settings.xml 文件进行修改,如下图所示:

7、配饰阿里云Maven镜像仓库,下载更快

再往下,找到<mirrors>,将下面这段话粘进去

<mirror>
<id>aliMaven </id>
<name>aliyun Maven </name>
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

8、在IDEA中设置Maven

打开IDEA,File -> Settings ->Build,Execution,Deployment -> Maven

这里修改3项:

第一项是Maven的安装目录,就是bin的上级目录

第二项先把Override勾选,然后选择配置文件为刚才修改的 conf 文件夹下的 settings.xml 文件

第三项也把Override勾选,然后选择地址为刚才创建的 localRepository 文件夹

然后Apply ,OK

  创建Maven工程

next

Finish

等待下载相应的配置文件即可

  maven 工程的组成

  pom.xml 配置

可以看到,pom.xml 文件中包含着项目的基本信息,但其中并没有指定编译时的JDK版本

<properties>

<maven.compiler.source>1.8</maven.compiler.source> <!-- 设置 Java 源代码兼容性 -->

<maven.compiler.target>1.8</maven.compiler.target> <!-- 设置编译的目标 JVM 版本 -->

</properties>

 将上面这段复制到pom.xml 中,点击右上角的刷新

  配置项目依赖的 jar坐标

以MySQL为例

<dependencies>

<!--mysql-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.16</version>

</dependency>

</dependencies>

刷新,之后等待自动下载

Maven 仓库官网:

https://mvnrepository.com/

在此官网就可以下载自己所需开发 jar 包

例:(以下载fileupload为例)

搜索

点击

 在下面找到使用人数最多的,点击1.3.1版本

将下面Maven内的代码粘贴到 pom.xml文件中的配置依赖程序块

刷新,等待下载

三、 Maven命令


Maven 常用命令

1. clean 删除编译的 target

2. compile 编译

3. package 打包

四、 打包 javaSE 项目案例


  如何给已经创建的工程添加 Maven

右键工程,,选择 Add Framework Support ... 

下滑,找到Maven,OK

 成功

记得设置 JDK 版本

 ●  添加打包依赖

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><!--给 jar 包起的别名--><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><!--添加项目中主类--><mainClass>com.ffyc.chatrom.client.frame.Run</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>

将上面的粘到 pom.xml 文件中,然后按照启动类所在的位置,将项目主类中的路径添加到mainClass中,刷新

  打包

clean --- compile --- package,然后会生成两个 .jar 文件,选下面那个

将文件可以复制到桌面上,随便重命名一下,然后双击运行

或者实际上更应该通过cmd命令窗口运行

java -jar server.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Compose Button移除水波纹效果

一、背景 在使用Compose实现Button按钮时&#xff0c;设计要求移除按钮的水波纹效果&#xff0c;只保留按压效果&#xff0c;经查Compose1.4.3版本中&#xff0c;并没有直接移除水波纹的能力 二、遇到问题 经过多次尝试&#xff0c;使用Compose的Button组件始终无法实现目标效…

html通过数据改变,图片跟着改变

改变前 改变后 通过数据来控制样式展示 <template><div>通过num控制图标是否更改{{num}}<div class"box"><!-- 如果num大于1则是另一种&#xff0c;样式&#xff0c;如果小时1&#xff0c;则是另一种样式 --><div class"item&qu…

android怎么告诉系统不要回收

在Android中&#xff0c;如果你想告诉系统不要回收你的应用程序&#xff0c;可以通过设置Activity的属性来实现。你可以设置android:configChanges属性&#xff0c;指定在哪些配置更改时不重新创建Activity。 例如&#xff0c;如果你想指示系统在屏幕方向更改时不要重新创建Ac…

又是一知识点

1.说一下什么是mvvm模式 Model代表数据模型&#xff0c;数据和业务逻辑都在Model层中定义&#xff1b;View代表UI视图&#xff0c;负责数据的展示&#xff1b;ViewModel负责监听Model中数据的改变并且控制视图的更新&#xff0c;处理用户交互操作&#xff1b; View 的变化会自…

小阿轩yx-Shell 编程之循环语句与函数

小阿轩yx-Shell 编程之循环语句与函数 for 循环语句 可以很好地解决顺序编写异常烦琐、困难重重的全部代码 &#xff08;&#xff09;{}&#xff1a;里边写的都是命令 &#xff09;&#xff1a;不能嵌套 $&#xff08;&#xff09;&#xff1a;可以嵌套&#xff0c;适合更…

day42 62.不同路径 63. 不同路径 II

62.不同路径 思路 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 按照动规五部曲来分析&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;…

2-Django项目进阶--继续学生管理系统

目录 项目框架: urls.py views.py modules.py class_data.html add_and_modify.html add_stu.html 笔记: 继承语法 模板继承总结&#xff1a; 班级添加 add_and_modify.html 修改添加公用一个页面即可 views.py 班级修改 views.py url.py 班级删除 views.py…

boost asio异步服务器(2)实现伪闭包延长连接生命周期

闭包 在函数内部实现一个子函数&#xff0c;子函数的作用域内能访问外部函数的局部变量。闭包就是能够读取其他函数内部变量。但是由于闭包会使得函数中的变量都被保存在内存中&#xff0c;内存消耗很大&#xff0c;所以不能滥用闭包&#xff0c;否则会造成程的性能问题&#x…

构造器--5.28

不用一个个属性赋值的方法&#xff1a; 知道了类的创建与使用&#xff0c;但是每次赋值都是一个个调用&#xff0c;我们可以用构造器使得方法简单一点&#xff0c;不用一个个调用属性赋值&#xff0c;直接传参就OK了&#xff1b; 点击类名然后ctrl可以查看构造器 public yanxi…

C++完成特色旅游管理信息系统

背景&#xff1a; 继C完成淄博烧烤节管理系统后&#xff0c;我们来到了特色旅游管理信息系统的代码编写&#xff0c;历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述&#xff1a; 为了更好的管理各个服务小组&#xff0c;开发相应的管…

民国漫画杂志《时代漫画》第30期.PDF

时代漫画30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

webpack打包配置项

webpack打包配置项 在config.js 中 module.exports {publicPath: process.env.NODE_ENV production ? / : /, //静态资源目录outputDir: dist, //打包名称assetsDir: static,//静态资源&#xff0c;目录devServer: {port: port,open: false,overlay: {warnings: false,erro…

SpringBoot自动装配源码

自动装配&#xff1a; 实际上就是如何将Bean自动化装载到IOC容器中管理&#xff0c;Springboot 的自动装配时通过SPI 的方式来实现的 SPI&#xff1a;SpringBoot 定义的一套接口规范&#xff0c;这套规范规定&#xff1a;Springboot 在启动时会扫描外部引用 jar 包中的META-IN…

css 渐变色边框

效果图&#xff1a; 代码&#xff1a; <style>:root{--br-radius: 12px;}.list{position: relative;}.list_tle{margin-top: 15px;margin-bottom: 5px;}.item{position: relative;display: inline-flex;} .br1 {padding: 10px 16px;clip-path: inset(0 round 6px);borde…

官宣|HelpLook现已入驻钉钉应用市场,助力企业知识管理知识

前一阵子OpenAI公司最新的GPT-4o技术震撼发布&#xff0c;人工智能的实际应用前景再次引起行业瞩目&#xff0c;或者被GPT4o的数据分析等特色功能折服。如您正寻求将AI技术融入企业知识管理&#xff0c;不要错过HelpLook&#xff01;HelpLook AI知识库已经正式入驻钉钉应用市场…

Flutter 中的 SlideTransition 小部件:全面指南

Flutter 中的 SlideTransition 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SlideTransition 是一个动画组件&#xff0c;用于创建滑动动画效果&#xff0c;使得子组件可以沿着一个轴滑动进入或滑动退出视图。这种动画效果常用于页面转场、菜单展开收起、元素的添加…

2024-5-8——给植物浇水

2024-5-8 题目来源我的题解方法一 模拟 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2079 我的题解 方法一 模拟 依次模拟浇水动作 使用一个变量 cap维护剩余的水量&#xff0c;使用t作为还未浇水的树的下标。当从第 i−1株植物到达第 i株植物时&#xff1a; 如果 ca…

前端中css穿透样式:deep的用法

在前端开发中&#xff0c;尤其是使用 Vue.js 这样的框架时&#xff0c;有时我们需要在子组件中修改或影响由父组件传递下来的样式。然而&#xff0c;由于组件的封装和样式隔离&#xff0c;直接修改子组件中的样式可能不起作用。这时&#xff0c;我们可以使用 ::v-deep 伪元素来…

基于Android的家庭理财APP的设计与实现(论文+源码)_kaic

摘 要 随着我国居民收入和生活水平的提高&#xff0c;家庭理财成为人们热议的焦点问题。在需求分析阶段&#xff0c;系统从用户的实际需求出发&#xff0c;确定了用户账户管理、记账、数据分析和提醒功能等几个核心需求。用户账户管理包括用户注册、登录和密码找回等基本操作…

【4th chapter】信息安全技术—安全技术、安全架构、安全策略、安全管理、软件的脆弱性

概要 安全技术安全架构安全策略安全管理软件的脆弱性加密技术&#xff08;Encryption Technology&#xff09;安全域架构&#xff08;Security Domain Architecture&#xff09;访问控制策略&#xff08;Access Control Policy&#xff09;信息安全管理体系&#xff08;Inform…