MAVEN在IDEA中的应用

2023-11-05

idea集成maven插件

settings-->输入maven-->选择本地maven安装路径,配置文件以及本地仓库的路径:

创建非web的maven工程

创建工程-->选择maven,下一步之后填写项目的坐标(类似于全类名),下一步之后再次确认:

创建出来的界面如下:

在该工程结构中,缺少一些目录,需要手动添加并设置。

添加test中的resources,然后右键选择Mark Directory As将其设置为相应的配置目录。

使用模板创建web的maven工程

创建工程-->选择maven-->勾选这个:

在选择模板时选中这一项:

创建好的界面如下:

仍然需要补齐目录:

注意:maven在创建完web工程后会有一个加载插件的过程,比较缓慢,可以在创建的倒数第二步加上一个键值对archetypeCatalog:internal

注意,刚创建好maven工程,会有一个部署的过程。特别是,如果本地仓库里是空的,那么idea会自动帮我们从中央仓库下载基本的jar包,这就需要耗费一些时间。

maven工程的一键构建

创建了maven之后,可以在idea中进行一键构建

最常用的就是打包。打包完的

如果列表中没有的,可以在方框的图标中来填写执行。比如:tomcat:run

相关配置和注意事项

 

要尽可能保持jdk的版本(以jdk9为例)和maven支持的jdk版本保持一致。在pom.xml上配置maven的默认版本如下:(和dependencies平级)

<properties>
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
</properties>

有些地方不支持上面的方式,还有另外一种配置插件的方式:(和dependencies平级)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <!--编译时用什么版本-->
                <target>9</target>
                <!--运行时用什么版本-->
                <source>9</source>
                <!--还可以设置编码方式-->
               <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

注意:通常编译失败就是因为版本的问题!!!!!!!!!!!!!!!!!!!!!!

这个配置的是这里的版本

要保持这里的版本和工程所用的jdk版本,还有tomcat版本保持一致或者兼容

maven默认使用的是tomcat6版本,如果使用的jdk版本过高,运行将会报错。如果想使用高版本的jdk,就需要配置提高tomcat的版本(以jdk9为例,要支持tomcat7+版本),添加如下插件:

运行时需要输入tomcat7:run才是运行新配置的tomcat

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <!--重新配置端口-->
            <configuration>
                <port>8888</port>
            </configuration>
        </plugin>
    </plugins>
</build>

 

JAR包冲突

当我们导入一个jar包坐标的时候,会自动将该jar包所依赖的所有jar包都导入,这样就会出现一个问题,就是可能有多个包都依赖同一个包。假如要导入的多个jar包都依赖于同一个jar包,并且版本不同,那么,最终被maven使用的是哪个版本呢?

第一种方式:谁写在前面,就用谁。

第二种方式:maven中的依赖包分为直接依赖包和传递依赖包,直接依赖包优先于传递依赖包。

  • 传递依赖包:导入一个包时被动导入的依赖包
  • 直接依赖包:直接导入的包,直接依赖包会覆盖传递依赖包
  • 但是如果传递依赖包在dependencyManagement标签内,就会被锁定,无法再被覆盖。比如
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

但是要注意的是,dependencyManagement标签只是锁定版本,并没有实际导入jar包。仍然需要复制一份到该标签外来进行导入。

第三种方式,推荐使用。使用exclusions标签直接排除某个版本的包,比如:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring.version}</version>
  <exclusions>
    <exclusion>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

设置jar包的作用范围

可以限制jar包的依赖范围

比如设置jar包的作用域,使其只在编译时作用

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <!--添加作用域-->
      <scope>provided</scope>
</dependency>

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MAVEN在IDEA中的应用 的相关文章

随机推荐

  • DetNet: A Backbone network for Object Detection 笔记

    Face 的lizeming大神注意到了现有Detection Network的两大通病 借用原本为了class而设计的network 牵强地附加上其他辅助结构来实现Detection 下采样能带来大感受野 从而提升class任务精度 但下
  • 华夏相机开发/臻识相机开发/车牌识别器开发对接使用总结

    最近做了款自助洗车小程序项目 需要用到车牌识别 华夏 臻识这两家相机均有使用 特此记录开发中的问题 1 初次使用 购买途径 当地购买的华夏相机T83 价格贵 且显示屏语音均无法使用 遂只对接了开闸 开发方式 因为自助洗车项目需要保持双端的及
  • PTA天梯赛的赛场安排

    天梯赛使用 OMS 监考系统 需要将参赛队员安排到系统中的虚拟赛场里 并为每个赛场分配一位监考老师 每位监考老师需要联系自己赛场内队员对应的教练们 以便发放比赛账号 为了尽可能减少教练和监考的沟通负担 我们要求赛场的安排满足以下条件 每位监
  • python爬虫需求分析-序:Python爬虫开发与数据分析简介

    爬虫是获取数据一种方式 能够按照一定规则自动抓取某个网站或者万维网信息的程序 现实环境中很大一部分网络访问都是由爬虫造成的 我们来看一个常见应用场景 当我们使用百度或者其他搜索引擎搜索某个关键字的时候 搜索结果中会包含对应的内容 比如 搜索
  • 游戏笔记本电脑推荐 多功能游戏本你见过吗?

    本来安排了一个国庆假期旅游计划 但是计划往往赶不上变化 被好朋友给 放鸽子 了 想着刚好我新买的游戏本到了 作为一个游戏宅 所以就打算呆在家玩玩游戏算了 结果不玩不知道 一玩上就爱不释手 现在甚至想将这款游戏笔记本电脑推荐给大家 它的名字叫
  • Windows主机信息搜集

    注意 一切内容仅用于信息技术分享 切勿用于其他用途 一切后果与作者无关 前言 通过命令执行使用cs拿到了内网的一台主机 接下来我们进行内网的信息搜集 1 内网环境分析 内网渗透 在拿到webshell的时候 想办法获取系统信息拿到系统权限
  • 四个/24地址块,试进行最大可能的聚合

    由于四个地址块前两个字节都相同 只需将每个地址块的第三个字节转换为二进制 212 56 132 0 24 212 56 10000100 0 212 56 133 0 24 212 56 10000101 0 212 56 134 0 24
  • C#控件命名规范

    类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calendar cal calMettingDates CheckB
  • nginx: [emerg] could not build the server_names_hash

    手头有块板子 上面起了nginx配置了多个域名 启动的时候发现报错 nginx emerg could not build the server names hash you should increase server names has
  • pandas中的时间序列

    一 夯实基础 datetime 模块中的数据类型 date 以公历形式存储日历日期 年月日 time 将时间存储为时分秒毫秒 datetime 存储日期和时间 timedelta 表示两个datetime值之间的差 日 秒 毫秒 1 获取当
  • 无效数据处理攻略: 如何从源头开始预防无效数据带来的风险

    数据处理在现代社会中变得越来越重要 而对于数据的可靠性和准确性 我们始终非常关注 然而 即使在对数据进行了精心管理的情况下 无效数据依然可能存在 并可能对数据分析和决策带来不良影响 因此 处理无效数据变得愈发重要 一 什么是无效数据 在处理
  • app数据分析体系 - 用户粘性 DAU,MAU 和 月人均活跃天数

    用户粘性指标 DAU MAU 月均活跃天数 DAU 和 MAU 日活跃用户占月活跃用户的比例越高 表明用户对App的使用粘性越高 DAU 即 Daily Active User 指日活跃用户数 MAU 即 Monthly Active Us
  • 后端进阶之路——深入理解Spring Security配置(二)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 前端炫酷代码分享 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架构咱们从0说 数据流通的精妙之道 后端进阶之路 文章
  • A/B测试是什么?面试官把我问懵了!

    什么是A B测试 A B测试是为 web 或 app 界面或流程制作两个 A B 或多个版本 在同一时间维度 分别让组成成分相同 相似 的访客群组 目标人群 随机的访问这些版本 收集各群组的用户体验数据和业务数据 最后分析 评估出最好版本
  • Golang 枚举详解

    什么是枚举 枚举 Enumeration 是一种常见的编程概念 它定义了一组命名常量 我们知道在 Go 语言中定义常量是这样的形式 const A a B b 开发者可以使用枚举创建复杂的 有限的常量集 这些常量集具有有意义的名称和唯一的值
  • 将 Bean 注入 Spring 容器的方法

    这里写目录标题 1 Configuration Bean 2 Componet ComponentScan 3 Import 注解导入 3 1 Import 直接导入类 3 2 Import ImportSelector接口 3 3 Imp
  • Microsoft Visual Studio 2013产品激活密钥

    win7 win8 win10系统下Visual Studio 2013各个版本的密钥 Visual Studio Ultimate 2013 KEY BWG7X J98B3 W34RT 33B3R JVYW9 Visual Studio
  • unity3D 物体跟随移动

    脚本挂载移动的物体上 public class Player MonoBehaviour public float Speed 4 Use this for initialization void Start Update is calle
  • c++打怪小游戏——修仙之路1.5

    这次我们要出示的程序是修仙之路1 5版本的 这个程序在c 打怪小游戏 修仙之路1 0多加了好几个功能 这次我们在这个程序中多加了一些代码 我们为下面的优化多准备一个头文件 include
  • MAVEN在IDEA中的应用

    idea集成maven插件 settings gt 输入maven gt 选择本地maven安装路径 配置文件以及本地仓库的路径 创建非web的maven工程 创建工程 gt 选择maven 下一步之后填写项目的坐标 类似于全类名 下一步之