maven(总)

2023-11-17

maven

maven的简介

  • maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理
    主要体现在项目和管理
    瀑布式开发:在做项目的时候要求有明确的需求,必须按照需求一步一步去做好规划,在项目的运行过程中严格的产出一些文档
    敏捷开发:首先将用户最关注的软件模型做出来(上线),再根据实际需要修改项目中的不足,然后再发布

maven四大特性:

  • 依赖管理系统
    可以用groupid,artifactid,version组成的Coordination(坐标),唯一标识一个依赖,比如:
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

任何基于maven构建的项目自身必须定义这三个属性,生成的 包可以是jar包,也可以是war包或者jar包

groupid:定义maven项目隶属的实际项目-公司名称
artifactid:该元素定义实际项目中的一个maven模块-项目名
version:该元素定义maven项目当前所处的版本

坐标属性的理解: maven坐标为各种组件引入了秩序,任何一个组件都必须明确的定义自己坐标。

  • 多模块构建
    将一个大的项目分成多个小的模块,使用标签来定义一组子模块。

  • 一致的项目结构
    maven统一了项目的目录结构,不管在eclipse还是在idea中 maven项目的目录结构是一样的

  • 一致的构建模型和插件机制

  • cmd下编译项目并运行
    在需要运行的项目根目录下打开cmd
    mvn compile(编译)
    显示build success 表示项目已经编译好了
    mvn exec:java -Dexec.mainClass=“xxx.Xxx”
    (这里mainClass需要写到包含main函数的类。例子当中,xxx是类的包名,Xxx类是main函数所在的类。)
    如果maven项目是第一次运行 可能运行时间比较慢

如果编译失败 可能出现的问题:

  • 不是使用管理员权限的dos命令
  • jdk环境配置问题,重装jdk
  • 代码编写时,类里面没有设置包名(如果编译时类里面没加包名,执行时也不需要加包名)

maven命令

maven的命令格式如下:
mvn [plugin-name]:[goal-name]
mvn 表示maven命令,后面表示插件的名字:后面跟命令的名字

mvn clean package -Dmaven.test.skip=true		 跳过单测打包
mvn clean install -Dmaven.test.skip=true		 跳过单测打包,并把打好的包上传到本地仓库
mvn clean deploy -Dmaven.test.skip=true			跳过单测打包,并把打好的包上传到远程仓库

mvn -v 或者mvn -version //查看版本信息 
mvn compile //编译源码 
mvn clean //清除项目临时产生的文件
mvn package //项目打包工具
mvn deploy //将打包的文件发布到远程参考,供其他人员下载。
mvn test-compile //编译测试代码 
mvn test //测试命令
mvn site //生成项目相关的网站 
mvn archetype:create //创建 Maven 项目 
mvn install //在本地 Repository 中安装 jar (将打包的jar包文件复制到你的本地库中,供其他模块使用)
mvn -Dmaven.test.skip=true //忽略测试文档编译 
mvn clean compile //将.java类编译为.class文件 
mvn clean package //进行打包 
mvn clean test //执行单元测试 
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中 
mvn archetype:generate //创建项目架构 
mvn eclipse:eclipse//将项目转化成eclipse项目
mvn dependency:tree //打印出整个项目的依赖树
mvn dependency:list //查看已解析依赖 
mvn dependency:analyze //查看依赖的工具 
mvn help:system //从中央仓库下载文件至本地仓库 
mvn tomcat7:run//在tomcat容器中运行java项目
mvn jetty:run//调用jetty插件的run目标在jetty Select容器中启动web应用
mvn help:active-profiles //查看当前激活的profiles 
mvn help:all-profiles //查看所有profiles 
mvn help:effective -pom //查看完整的pom信息

在需要运行的项目根目录下打开cmd运行mvn命令

-D传入属性参数

例如:mvn clean package -Dmaven.test.skip=true,
以-D开头,将maven.test.skip的值设置为true,就是告诉maven打包的时候,跳过单元测试,同理,mvn clean deploy -Dmaven.test.skip=true表示部署项目的时候跳过单元测试

-P:

使用指定的Profile配置

maven仓库:

对于maven来说:maven分为本地仓库和远程仓库。
首先会查看本地仓库,如果本地仓库没有,则会去远程仓库查找。
远程仓库分为三种:中央仓库,私服,其他公共库
中央仓库是默认配置下,maven下载jar包的地方(下载比较慢)
私服:局域网内假设一个私有的仓库服务器,用其代理所有所有外部的远程仓库,内部的项目还能部署到私服上,供其他项目使用。公司内部应该使用私服,优点:

  • 节省自己的外网宽带
  • 加速maven构建
  • 部署第三方控件
  • 提高稳定性
  • 降低中央仓库的负荷

其他公共库:
常用阿里云仓库

maven的打包操作:

java项目产生jar包,web项目产生war包,
对于每个环境下的项目打包,对应的项目所需要的配置资源都会有所区别,可以通过ant 或者idea自带的打包功能实现打包,但是当项目很大,并且需要的外界配置很多的时候,此时的打包服务就会很复杂,对于maven项目而言,可以通过pom.xml配置的方式,来实现打包的环境选择,相比较其他形式的打包工具,通过maven只需要通过简单的配置,就可以轻松完成不同环境下项目的整体打包。

  • 第一步:建立相对应的目录结构
    在这里插入图片描述
  • 第二步
    配置好properties 文件,,,打开打开控制台 :
    在这里插入图片描述
  • 第三步 输入mvn命令
    在这里插入图片描述
    clean 清除 compile编译,package 打包 -p去找profile里的id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven(总) 的相关文章

  • JDT - 尝试更改类型的超类。我不知道超级类的限定名称

    我有一个程序 除其他任务外 还必须使用 JDT 更改某些类的超类 我有两个字符串 其中包含要交换的超类的限定名称 例如 org example John 和 org example Smith 并且我正在解析整个 AST 搜索扩展这些类的类
  • 我们可以在java中放弃已经签名的jar吗?

    I ve a jar文件具有旧签名 并希望使用新签名重新签名 是否可以 如果可能的话 怎么做 如果签名不是您拥有的 您需要先解压 jar 像这样 假设是unix 否则翻译成dos jar xvf JarName jar rm rf META
  • Java 8 中异常类型推断的一个独特功能

    在为该网站上的另一个答案编写代码时 我遇到了这个特性 static void testSneaky final Exception e new Exception sneakyThrow e no problems here nonSnea
  • 如何在Java中使用我的密码加密和解密字符串(PC而非移动平台)? [复制]

    这个问题在这里已经有答案了 我想加密一个字符串然后将其放入文件中 当我想要的时候也想解密它 我不需要很强的安全性 我只是想让其他人更难获取我的数据 我尝试了几种方法 这是这些 Md5加密 如何在 Android 中对字符串进行哈希处理 ht
  • Spring批量写入器限制

    我正在工作 Spring Batch 项目 从数据库读取记录然后写入rabbitmq 然后发送到HTTP消息网关 网关有150TPS我需要将我的应用程序限制为 150TPS 有没有办法带弹簧批的油门或者还有其他更好的方法吗 你能行的 在 S
  • 外部化 Spring Security 配置?

    我有一个 Web 应用程序 可以使用 Spring Security 的几种不同配置 但是 这些差异配置都是在我的 applicationContext 配置文件中设置的 因此 为了在客户站点调整这些内容 必须在 WAR 文件内修改这些内容
  • 声纳要求将这一领域定为最终目标

    我的程序中有以下代码 在与 Maven 集成后 我正在运行 SonarQube 5 对其进行代码质量检查 我面临这个错误 将此 public static processStatus 字段设为最终字段 将此 public static pr
  • Poi:从 xlsm 打开 Excel 文件后将其保存为 xlsx

    我正在编写一个java程序 它打开一个用户定义的excel文件 用数据填充它 然后将其保存在用户指定的路径 文件名和扩展名下 即使输入文件是 xlsm 也应该可以声明输出保存为 xlsx 但实际上是不可能的 如果我尝试使用下面的代码 打开文
  • 如何使用jdbc驱动编写事务?

    我想使用 jdbc 编写一个事务java 我尝试过这个简单的交易 BEGIN TRANSACTION NL GO NL UPDATE table SET col test where id 1010 NL GO NL COMMIT 我尝试过
  • 使用嵌入式 Jetty 7 发布 JAX-WS 端点

    有人可以帮忙吗 我想使用嵌入式 Jetty 7 作为端点 这是我尝试过的 public class MiniTestJetty WebService targetNamespace http public static class Calc
  • 检查对象是否为空

    我有一个链表 其中第一个节点包含空对象 表示firstNode data等于null firstNode nextPointer null firstNode previousPointer null 我想检查firstNode 是否为空
  • Spark java:如何处理多部分/表单数据输入?

    我在用spark http sparkjava com 开发网络应用程序 当我想上传文件时出现问题 public final class SparkTesting public static void main final String a
  • 如何在 iText 7 中创建页面大小不等的文档

    如何在 iText 7 中创建页面大小不等的文档 iText7 可以吗 在iText5中 我使用document setPageSize and document newPage 如果您通过高级 API 添加内容 Document add
  • java中从视频中提取图像

    我想知道如何使用 JMF 从视频中提取图像 Player player Manager createRealizedPlayer cdi getLocator player start FrameGrabbingControl frameG
  • 在Java中,为什么某些变量首先需要初始化,而其他变量只需要声明?

    我试图更深入地理解我是否遗漏了一些关于 Java 何时需要变量初始化与简单声明的理解 在以下代码中 不需要为变量 row 赋值即可编译和运行 但变量 column 则需要赋值 注意 该程序没有任何用处 它已被修剪为仅显示此问题所需的内容 以
  • 如何管理一个 JInternalFrame 调用另一个 JInternalFrame?

    我有一个带有此代码的 JDesktopPane public class Menu extends JFrame implements ActionListener Creates new form Portada public stati
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • FocusEvent 没有获取 JFormattedTextField 的最后一个值,我如何获取它?

    我有两个JFormattedTextField我的物体JFrame目的 我想要通过这些值进行基本数学 加法 JFormattedTextField对象 我希望当焦点丢失第一个或第二个文本字段时发生这种情况 但当 focusLost 事件没有
  • 将Json字符串映射到java中的map或hashmap字段

    假设我从服务器返回了以下 JSON 字符串 response imageInstances one id 1 url ONE two id 2 url TWO 杰克逊代码大厦 JsonProperty 我怎样才能得到HashMap对象出来了
  • 无法取消 GWT 中的重复计时器

    我正在尝试在 GWT 中安排一个重复计时器 它将每一毫秒运行一次 轮询某个事件 如果发现满意 则执行某些操作并取消计时器 我尝试这样做 final Timer t new Timer public void run if condition

随机推荐

  • [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • 【开发环境搭建】3.Anaconda安装包和channels管理

    文章目录 1 conda 管理包 2 conda channel管理 2 1 指定安装包的channel 2 2 default中找不到合适包时的包安装方法 2 3 environment yml中指定pip安装的包 本文内容对linux系
  • 项目实战04_构建企业级maven私服

    注意 在一个互联网企业中 都是采用分模块的开发模式 每个团队维护自己的模块 是无法看到另外项目团队的模块代码的 需要实现业务的通讯就会使用到rpc远程调用技术 Maven私服作用 1 构建一个企业级Maven私服 缓存微服务团队中jar包
  • 乐高wedo搭建图纸_乐高课程 wedo2.0编程

    乐高wedo2 0编程套装 编号45300 乐高教育 WeDo 2 0 通过乐高模型和简单的程序编写 鼓励和激发 2 到 6 年级小学生对科学 工程以及相关课程的学习兴趣 WeDo 2 0强调孩子通过动手体验来树立信心 敢于发现 提出和思考
  • Java使用POI导出Word文档

    POI是Apache组织的一套关于文档操作的api 可以实现word文档和excel文档的读取和写出的功能 所需jar包点击下载 生成word文档 public class WordStudy Test public void test1
  • 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart. Verify that you have su

    成功解决 MongoDB安装报错 Service MongoDB Server MongoDB MongoDB failed tostart Verify that you have sufficient privileges to sta
  • [命令技巧]alias

    转自 http www dutor net index php 2011 03 commands alias alias 假名 别名 bash的一个内建命令 用来给常用的较长的命令定义个简短的名称 alias命令的基本格式为alias wo
  • Tomcat环境搭建部署

    目录 Tomcat 环境搭建 Win10 Tomcat部署 Tomcat是常见的免费的web服务器 Tomcat 环境搭建 Win10 自己在搭建的过程中出现了一些问题 网上找了找解决方法 发现还是有一些问题 记录一下 Tomcat下载 h
  • overflow相关面试题

    overflow 是 CSS 属性 用于控制元素的溢出内容的处理方式 当元素中的内容超出其容器时 可以通过该属性进行控制 overflow 属性通常与容器元素 如 div 或 一起使用 overflow 属性可以取以下几个值 visible
  • osgEarth的Rex引擎原理分析(五十七)osgEarth中多个着色器的源代码的编译链接过程

    目标 五十四 中的问题129 osgEarth中多个着色器的源代码的编译链接过程 1 先一个一个编译 void Shader PerContextShader compileShader osg State state extensions
  • 在Ubuntu 20.04上成功安装 rtx 3060 notebook Nvidia cuda 和基本图形驱动

    cuda Toolkits中包含了对应的图形驱动 所以只需要安装CUDA 顺便就安装了基本的显卡驱动 最好在新笔记本上安装 经常会失败 重装Ubuntu也不怕丢失重要数据 为了保存用户数据 至少把硬盘分为3个区 1 swap 32GB 2
  • 阿里云发布首台云电脑“无影”,传统 PC 已“末路”?

    作者 硬核云顶宫来源 硬核编辑部 在9月17日的云栖大会上 阿里云智能总裁 达摩院院长发布阿里云第一台云电脑 无影 这是一台长在云上的 超级电脑 只需将一张名片夹大小的 C Key 上连接一块屏幕 就可以进入专属云电脑桌面 访问各种应用和文
  • 整数规划的分支定界法

    分支定界法 把全部可行解空间进行恰当地进行系统搜索 这就是分支定界法的基本内容 我们通常把全部可行解空间反复分割为越来越小的子集 这就称为分支 并对每个子集内的解集计算出一个目标下界 针对最小值问题 这称为定界 在每次分支后 凡是界限超过已
  • 轻轨服务器一般用什么系统,原来轨道交通集成平台的优势是因为这个啊......

    原标题 原来轨道交通集成平台的优势是因为这个啊 轨道交通的重要性就不多说了 火车 高铁 地铁都是大多数人的出行首选 也因此带来铁路交通管理的困难 仅靠人力是远远不够的 必须依靠现代安防科技 但是各个安防系统无法兼容 会造成后台管理的困难 飞
  • 【registries】registrie rest-service idea 无法引入

    1 概述 因为需要 我在外网mac环境尝试本地运行registry 经过一番折腾后 运行主类报错com hortonworks registries webservice RegistryApplication java lang Clas
  • 目标检测从零开始的学习之路--原理篇

    安装相关 Anaconda官网下载安装下一步进行到底 相关环境那儿记得打勾 不然就自己添加下环境变量就好 另 一般进官网就找Download 再找相关想下载的版本 适配系统之类的 这里下载的是Python 3 7 version for W
  • 设计模式:命令模式

    命令模式很好理解 举个例子 司令员下令让士兵去干件事情 从整个事情的角度来考虑 司令员的作用是 发出口令 口令经过传递 传到了士兵耳朵里 士兵去执行 这个过程好在 三者相互解耦 任何一方都不用去依赖其他人 只需要做好自己的事儿就行 司令员要
  • SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】

    第一章 绪论 1 1 课题背景 目的及意义 从 20 世纪末以来 在全球经济日趋一体化的背景之下 中国经济也得到了飞速的发展 家庭收入也快速增长 居民的消费结构发生了巨大变化 购置房产 旅游 汽车消费 教育等成为居民消费重点 现代家庭越来越
  • 南京邮电大学算法分析与设计实验三(回溯法)

    文章目录 问题一 回溯法求解 8 皇后问题 一 题目 二 代码 三 实验结果 问题二 回溯法解决装载问题 一 题目 二 代码 三 实验结果 思考题 N皇后输出独立解 一 题目 二 代码 三 实验结果 问题一 回溯法求解 8 皇后问题 一 题
  • maven(总)

    maven maven的简介 maven主要服务于基于java平台的项目构建 依赖管理和项目信息管理 主要体现在项目和管理 瀑布式开发 在做项目的时候要求有明确的需求 必须按照需求一步一步去做好规划 在项目的运行过程中严格的产出一些文档 敏