首页 > 其他分享 >Maven(一)如何用Eclipse创建一个Maven项目

Maven(一)如何用Eclipse创建一个Maven项目

时间:2023-02-05 21:33:06浏览次数:56  
标签:xml 文件 项目 创建 Eclipse Maven pom


1.什么是Maven

Apache Maven 是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。

Maven工程结构和内容被定义在一个 xml 文件中——pom.xml,是 Project Object Model (POM) 的简称,此文件是整个 Maven 系统的基础组件。

2.为什么要用Maven

当我们创建一个Maven项目后,就不需要再自己去导入各种jar包了,将要导入的jar包依赖信息配置在pom.xml中,Maven项目会根据具体的配置自动地在编译、测试和运行的时候,从本地仓库中导入相应的各种依赖。

这样做有两个最大的好处,一个是项目的依赖被统一管理,不容易出现依赖冲突(比如说jar包引入的版本冲突);另一个就是项目的体积变小了,毕竟一个稍微大些的项目光是引入的jar包就占了相当多的体积,而Maven项目只需要一个pom.xml文件就搞定了

约定优于配置

Maven 使用约定而不是配置,开发者不需要再关心每一个配置细节。当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,并在 pom.xml 中添加项目相关的依赖。

Maven项目规定了源码文件、资源文件、测试文件、输出文件等的默认配置,简单的说就是把这些文件规定放在对应的路径下方便管理,如下表所示,假设​​${basedir}​​表示工程根目录:

项目工程的路径

存放的文件类型

${basedir}/src/main/java

项目源码

${basedir}/src/main/resources

资源文件,比如.properties文件

${basedir}/src/main/webapp

web项目相关资源文件,比如web.xml

${basedir}/src/test/java

测试用的源码

${basedir}/src/test/resources

测试用的资源文件

${basedir}/target/classes

编译后的文件

${basedir}/target/test-classes

编译后用于测试的文件

如果是用Eclipse的Maven插件生成的Maven项目,只会自动生成​​src/main/resources​​​和​​target/classes​​​、​​target/test-classes​​,需要自己手动添加其它的目录,并且指定项目的source以及编译后的输出目录

3.Maven的安装与设置环境变量

想要创建一个Maven项目需要先安装Maven,并且设置好环境变量

  • ​​Maven下载​​
  • 设置环境变量
  • 新建变量​​MAVEN_HOME​​​,值为Maven的目录​​X:\XXX\apache-maven-XXX​
  • 将​​%MAVEN_HOME%\bin​​​添加到​​Path​​变量下
  • 运行CMD,输入​​mvn -v​​后可以看到Maven的版本信息等则表示安装成功

4.创建Maven项目和依赖

4.1创建Maven项目有两种方式,如下

第一种创建方式:使用命令行手动创建

mvn archetype:generate -DgroupId=com.lewis.seckill -DartifactId=seckill -Dpackage=com.lewis.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp

命令行执行后会创建一个​​maven-archetype-webapp​​​骨架的Maven项目,其中​​groupId​​​是项目组织唯一的标识符,实际对应JAVA的包的结构;​​artifactId​​​是项目的唯一的标识符,实际对应项目的名称;​​package​​​一般是​​groupId​​​+​​artifactId​​,是自动生成的,可以修改

第二种创建方式:借助IDE工具的Maven插件来创建项目

笔者用的是Eclipse,所以这里只介绍Eclipse怎么用插件生成一个Maven项目

Eclipse安装Maven插件

  • 不知道怎么Maven插件的请参考​​该博文​​,推荐使用 link 方式手工安装的方式
  • 如果是手工安装Maven插件的,可能会缺少pom.xml 图形化编辑工具,请另外添加进去,具体情况请参考​​该博文​
  • 已经安装了Maven插件的请走下一个步骤
  • ​File​​​→​​New​​→​​Other...​​→​​Maven Project​​→​​Next​​,进入如下界面
  • 点击​​Next​​,选择要构建的骨架​​maven-archetype-webapp​​,如下图
  • 点击​​Next​​,填写​​groupId=com.lewis.seckill​​,​​DartifactId=seckill​​,​​package=com.lewis.seckill​​(根据实际情况填写),然后​​Finish​

将Maven项目转变为Eclipse支持的Web项目

此时构建好的只是一个Maven项目,需要将其转变为Eclipse支持的Web项目,这样才能够直接在Eclipse中部署到Tomcat上进行调试。具体情况请参考​​该博文​​

4.2修改pom.xml文件

当创建完Maven项目后会在根目录下有一个pom.xml文件,Maven项目通过pom.xml进行项目依赖的管理,如果没有该xml文件,Eclipse不会将该项目当作一个Maven项目

添加项目需要的jar包依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lewis</groupId>
<artifactId>seckill</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>seckill Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

在这个pom.xml里,会自动添加了Junit的依赖,不过有可能是3.X版本的,我们将其版本改为4.11的,因为旧版本的Junit不支持注解测试。

项目需要什么依赖,我们就到该文件下添加相对应的配置信息,比如我们要使用MySQL,就这pom.xml文件的​​dependencies​​标签里引入如下配置

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>

每次更新完pom.xml文件并保存后,Maven 项目会自动检测下载新的依赖。这里的​​groupId​​​+​​artifactId​​​唯一定位了依赖仓库里的MySQL的驱动jar包,​​version​​​ 表示其版本,​​scope​​​ 表示该依赖的范围。在Maven项目中,编译、测试和 运行使用的是不同的classpath,​​runtime​​表示该项目在编译时不导入该依赖,而在测试和运行项目时则导入。

那么如何查找jar包坐标和版本信息呢?请参考​​该博文​​

更新依赖时可能存在的问题

由于Maven默认会前往中央仓库下载依赖,下载的速度可能会非常慢,甚至连接不上,一般我们会设置成阿里云的镜像,下载速度会快很多,具体操作请参考​​该博文​​

在Eclipse上运行Maven命令

在安装了Maven插件之后,已经不需要用cmd来输入命令,可以直接在Eclipse中直接输入指令。在cmd中每个命令都要加上mvn前缀,而在Eclipse中则不需要,一般常用的指令有clean、compile、install、package等,一般都会在执行命令前先执行clean清除编译后的文件

右键点击Maven项目,执行​​run as​​里的命令,也可以自己输入其他的命令,具体操作请参考​​该博文​​

执行Maven命令可能发生的问题

如果是第一次在Eclipse上创建Maven项目,可能会存在输入Maven命令,Eclipse的控制台却毫无反应的情况,这是因为没有传参数,具体情况请参考​​该博文​​

到这一步,我们的Maven项目就已经初步建立成功了,接下来只需要安装规定在src/main/java下放置源码,在src/main/resources下放置资源文件就行了

相关链接

  • 有想要了解Maven的依赖范围和依赖传递性可以参考​​该博文​​
  • 如何在Eclipse中创建一个web骨架的Maven项目请参考​​该博文​​


标签:xml,文件,项目,创建,Eclipse,Maven,pom
From: https://blog.51cto.com/u_15951177/6038469

相关文章

  • NPOI-创建Excel(1)
     使用NPOI类库可以实现对Excel表格的操作,找了找网上有用的资料记录下来,感谢灵魂重铸大佬写的文章给了我很大帮助 这是原网址:http://blog.csdn.net/fujie724 用途:操作......
  • Docker 镜像创建之dockerfile
    引言创建镜像有三种方法,分别为基于已有键像创建、基于本地模板创建以及基于Dockerfile创建。一、基于现有镜像创建#首先启动一个镜像,在容器里操作yuminstall-yepel-......
  • 用conda创建python虚拟环境
    1.conda常用的命令conda-V#查看版本condalist#查看安装了哪些包。condaenvlist或condainfo-e#查看当前存在哪些虚拟环境condaupdateconda#检查......
  • IDEA/WebStrom Deepin/UOS桌面图标创建
    IDEA[DesktopEntry]Categories=Developer;Comment=IntelliJIDEAExec=/home/xxx/app/idea-IU-221.5080.210/bin/idea.shIcon=/home/xxx/app/idea-IU-221.5080.210/b......
  • 创建图的存储结构
    引入由于图的任意两个顶点之间都存在关系,自然无法采用诸如顺序存储结构这种适合一对一,物理地址连续的存储法,但可以采取邻接矩阵或邻接表作为图的存储结构。邻接矩......
  • IDEA中如何利用Maven给JAVA添加第三方库和打包问题
    从今天开始,遇到技术上的问题都会在这里写下来,虽然有可能都是小儿科问题,但是自己成功解决出来,还是很开心的。从很久之前,我就在java导包的过程中遇到问题,他不像python那......
  • Java多线程01——多线程的创建
    1进程和线程进程:进程是并发执行程序在执行过程中,资源分配和管理的基本单位。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。线程:线程是进程的一个执......
  • 06 创建对象内存分析
    现在不太懂什么是栈,什么是堆?无关代码,个人此时喜好记录packagecom.zhan.base05Oop;publicclassTest06{publicstaticvoidmain(String[]args){P......
  • 方法和作用域中创建类
    1.方法中创建类类不仅可以在类的内部创建,也可以在方法和作用域中创建.publicclassParcel5{publicDestinationdestination(Strings){finalclass......
  • P63 类与对象的创建
    类与对象的关系类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体事物动物、植物、手机、电脑。。。Person类、Pet类、Car类等,这些类都是......