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

Java开发+Intellij-idea+Maven+工程构建

Java开发+Intellij-idea+Maven+工程构建

Intellij-idea是一款流行的Java集成开发环境,它支持Maven作为项目管理和构建工具。Maven可以帮助开发者自动下载项目依赖的jar包,执行编译、测试、打包等生命周期任务。本资源将介绍如何在Intellij-idea中创建、导入、转换和编译Maven工程,以及如何配置Maven的相关参数和插件。本资源适合对Java开发和Maven感兴趣,想要在Intellij-idea中使用Maven进行工程构建的开发者、学生、老师等人群。本资源的使用场景和目标是:在Intellij-idea中使用Maven来管理和构建Java工程,提高开发效率和质量。

最近效应项目的要求,学习在idea上编写项目。作为一个新手遇到问题也算是正常的,重要的是把它解决,get新技能。

编写过maven工程的小伙伴们应该都知道怎么在eclipse中编译maven工程:右键工程–> run as -->maven install。简单明了。

但是在idea上maven工程有自己的窗口,而且窗口中的maven项目的目录与project窗口中的目录不一样。在这里我就分享一下自己的经验。

1、打开maven项目窗口:工具栏–>Help–>Find Action,在弹出的窗口里的文本框输入:maven projects

在这里插入图片描述

2、在打开的maven project窗口中,点击YourProject->Lifecycle->package->Run Maven Build执行打包,生成的war默认在工程的target目录下。

在这里插入图片描述

IDEA如何执行maven命令

在IDEA主界面左下角找到 Terminal 点击进入,直接输入想执行的命令即可。

Exec Maven Plugin全面解析和使用示例

1.为什么使用exec?

现在的工程往往依赖
众多的jar包,不像war包工程,对于那些打包成jar包形式的本地java应用来说,通过java命令启动将会是一件极为繁琐的事情,原因很简单,太
多的依赖让参数-classpath变得异常的恐怖。为此,在发布应用时,一般使用两种方法来启动应用程序:一种是通过工具将工程及其所有依赖的jar包
打包成一个独立的jar包(在maven里有两个插件assemly和shade是用来完成这种工作的);另一种方法是编写一个run.bat文件,文件
包含一个启动应用的java命令,很显然,这个命令的classpath必须包含全部依赖的jar包。但是对于尚处在开发阶段的应用来说,第一种方法需要
将所有jar包解压再重新打包,因此非常耗时,特别是工程非常大的时候。第二种方法的问题在于,对处在开发阶段的工程,经常需要引入或升级jar包,这就
需要频繁地修改run.bat文件。实际上,对于使用maven管理的工程,完全可以通过maven来获取工程的classpath,简化应用程序的启动
命令,这正是maven插件exec被设计出来的主要动机。使用exec比使用java命令去启动应用程序最大的优势就在于:你不需要再去为-classpath而伤脑筋了。

2. exec:exec和exec:java的区别

exec
主要由两个goal组成:exec:exec和exec:java。你应该如何选择呢?首先,你需要记住,exec:exec总是比exec:java强
大而灵活,这一点会在后面的示例中体现出来,除此之外,两者的主要区别是在线程管理上:exec:exec总是启动一个新的线程,并且在只剩下守护线程的
时候从VM上退出(关闭应用程序)。而对于exec:java,当所有非守护线程结束时,守护线程会被joine或interrupt,应该程序不会关
闭。但是对于一般的使用者来说,这种差别并不重要。对于两者的选择,一般来说,如果你的工程启动非常简单,不需要设置jvm参数、系统属性、命令行参数,
那么就用exec:java,你只需要指定一下mainClass,一切就OK了。

相关文章:

  • Mysql in查询优化
  • SpingBoot的项目实战--模拟电商【5.沙箱支付】
  • IO进程线程Day6
  • springboot git配置文件自动刷新失败问题排查
  • IDEA UML图
  • C语言之素数进化论
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • [论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
  • Flutter中的Tree
  • 力扣188. 买卖股票的最佳时机 IV
  • cissp 第10章 : 物理安全要求
  • PHP中excel带图片数据导入
  • Centos 磁盘挂载和磁盘扩容(新加硬盘方式)
  • <HarmonyOS第一课>1~10课后习题汇总
  • 使用HttpSession和过滤器实现一个简单的用户登录认证的功能
  • 【5+】跨webview多页面 触发事件(二)
  • canvas 五子棋游戏
  • CEF与代理
  • Centos6.8 使用rpm安装mysql5.7
  • css属性的继承、初识值、计算值、当前值、应用值
  • express.js的介绍及使用
  • Hexo+码云+git快速搭建免费的静态Blog
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Mysql优化
  • NSTimer学习笔记
  • Python 反序列化安全问题(二)
  • 大型网站性能监测、分析与优化常见问题QA
  • 精彩代码 vue.js
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用权重正则化较少模型过拟合
  • 双管齐下,VMware的容器新战略
  • 学习使用ExpressJS 4.0中的新Router
  • 自制字幕遮挡器
  • ​520就是要宠粉,你的心头书我买单
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T2 联合权值
  • $(selector).each()和$.each()的区别
  • %check_box% in rails :coditions={:has_many , :through}
  • (11)MATLAB PCA+SVM 人脸识别
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)fgets与fputs函数详解
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (力扣题库)跳跃游戏II(c++)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)nsfocus-绿盟科技笔试题目