章十五、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.tpcf.cn/bicheng/18277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…