使用maven创建Spring项目

概念

Maven是java的一个依赖管理工具。所谓依赖就是指在Java开发过程中引入的各种jar包和第三方库,而可能这些库本省还要引用其他的库,这样我们直接引用的称为直接依赖,库的依赖称为间接依赖。如果我们手动去引入这些依赖,过程将变得十分繁琐,因此需要一个仓库Maven来为我们管理并引入这些依赖。Maven中把每个依赖包称为构件

那么我们如何从仓库中准确的查找到每个构件呢?这就需要通过坐标来完成,maven仓库的坐标由groupId、artifactId、version三者组成。其中groupId为你的公司名称,artifactId为你的项目名,version为项目的版本号,package为所需要创建的包名。即我们在maven仓库中查找依赖时,先找到公司名groupId,再找到项目名,最后找到版本号即可唯一确定一个依赖。

maven的仓库分为本地仓库和远程仓库,本地仓库是指maven会将依赖包下载到本地的某个位置,查找依赖时先查找本地仓库,如果没找到才回到网上的远程仓库进行查找并下载。如果大家都访问maven的同一个仓库,会造成负载压力过大且访问过慢,因此maven在不同地方提供了镜像仓库供人们就近访问。

maven还提供了许多插件,我们可以使用插件很便捷地完成项目的构建、编译、打包等操作。

在maven中如果A依赖B,B依赖C,C依赖D,而A依赖E,E也依赖D,那么A会依赖关系较近E的D。如果两个依赖据A一样近,则会根据依赖解析的先后顺序进行依赖。

安装配置

安装:首先从Maven官网下载所需maven的压缩包,之后将其解压,最后将解压目录下的bin文件夹添加到PATH路径中就可以在命令行下使用mvn --v查看版本号。

配置仓库:编辑maven/conf/settings.xml文件,在<localRepository>标签中指定本地仓库的位置。

<localRepository>D:/Java/maven/repository</localRepository>

添加国内镜像源:从国内镜像源下载依赖比直接使用默认下载源更快,在<mirros>标签内如下配置为阿里云的镜像源

  <mirrors>
    <mirror>
    <id>aliyunmaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/repository/public </url>
    </mirror>
  </mirrors>

创建项目

maven常用的命令如下:

mvn -compile

编译项目

mvn -test

测试项目

mvn -package

打包项目

mvn -install

安装jar包到本地仓库

mvn -clean

删除编译好的目标文件

通过archetype插件创建项目:在命令行输入mvn archetype:generate会开始自动创建maven项目,如下所示会提示选择要创建的maven类型编号、并输入groupId、artifactId、version、package等内容。

也可以在一条命令行中指定 groupId、artifactId、version、package等内容

mvn archetype:generate -DgroupId=com.tory -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp

最后使用jetty容器运行项目:mvn jetty:run ,注意需要在pom中引入jetty插件,当然也可以引入Tomcat插件在该容器中运行项目。

在IntelliJ IDEA中创建Maven项目更为简便,首先在IDEA中配置maven:在IDEA中打开->File | Settings | Build, Execution, Deployment | Build Tools | Maven对如下三个选项栏进行配置,分别对应maven的安装目录,配置文件及仓库的目录

 接着创建一个Maven项目,点击 File | New | Project弹出如下界面,选择maven类型并点击Next。如果需要创建模板可以勾选create from archetype并选择所需模板

接下来设置项目名称与位置,并且设置GroupId、ArtifactId、Version信息

最后选择maven的信息,点击Finish创建完成

pom.xml文件

POM是项目对象模型(Project Object Model)的简称,创建好maven项目后会在根目录下生成pom.xml文件对依赖进行管理。如下所示,

首先<modelVersion>指定了POM的版本。

<groupId>、<artifactId>、<version>分别指定了项目的三个坐标,groupId通常由“公司名.项目名”构成,artifactId由“项目-模块名”构成。version一般由三位数字,第一个数字代表大版本号,第二个数字代表分支版本号,第三个数字代表小版本号。后面的Snapshot代表快照版本,alpha代表内测版本,beta代表公测版本,RC(Release Candidate)发行前最后的候选版本,release代表稳定版本,GA(General Availability)正式发布版。

<packaging>指定项目的打包方式,默认为jar包

<name>代表项目的名字,<url>为项目的网址

<dependencies>中通过坐标的方式引入项目需要的具体依赖。<scope>代表依赖使用的范围,这里为test代表只能在test中使用该依赖。默认为compile,在编译、测试、运行都有效,provided在编译、测试有效,runtime在厕所、运行有效。还可以使用<exclusion>标签来排除引用依赖的传递依赖,比如A依赖B,B依赖C,在A中引入B依赖时不希望引用C,这时就可以使用exclusion排除C。

<build>下引入所使用的maven插件

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
  <!--指定POM版本-->
  <modelVersion>4.0.0</modelVersion>

  <!--项目的maven坐标-->
  <groupId>org.example</groupId>
  <artifactId>SpringMVC</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>SpringMVC Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!--项目所需依赖-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--所用maven插件-->
  <build>
    <finalName>SpringMVC</finalName>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

pom的依赖可以进行继承,例如在父类项目的pom的<dependencyManagement>中引入了junit依赖如下,则在子项目依赖了父项目之后就可以继承junit而不需要再次引入。

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
发布了124 篇原创文章 · 获赞 65 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/theVicTory/article/details/105611536
今日推荐