Maven基础 Maven 安装和配置 IDEA集成 常用命令 配置文件

maven是apach开源的一个项目管理工具,maven在美国口语中表示专家、内行的意思,因此它可以做很多事情。

maven可以解决的问题:

  • 自动引用各种jar包,不用自己搜索下载导入
  • 编译Java文件(IDEA也可以即时编译)
  • 自动运行单元测试,不用自己做
  • 项目打包并部署项目

maven的两个经典应用:

  • Maven的依赖管理:普通项目的jar直接放在项目里,项目之间不可重用;而maven工程的jar包存放在jar的仓库中,使用jar的坐标找到jar包(索引/指针,在pom.xml文件内)。
  • 项目的一键构建:一个命令完成项目编译、测试、报告、打包、部署。

安装和配置

安装

  1. 从官网下载
  2. 解压即可
  3. 配置环境变量
    • 系统变量设置MAVEN_HOME等于D:apache-maven-3.5.2-bin
    • 在系统变量Path中添加%MAVEN_HOME%in
  4. 注意:maven运行依赖jdk,并且有系统变量JAVA_HOME
  5. cmd窗口运行mvn -v检测

仓库配置

maven会自动将需要的jar包从*仓库下载到c盘,这里叫本地仓库。

公司一般建立一个自己的仓库,叫远程仓库(私服)。远程仓库可以从*仓库下载,也可以自己上传。

因此,maven工程先从本地找,再从远程找,再从*找。

设置本地仓库位置:找到conf目录下面的settings.xml文件,在注释下面添加

  • <localRepository>D:maven_repository</localRepository>

IDEA集成

配置

在intelliJ IDEA中构建maven项目,首先安装好maven,然后:

  1. settings->Build Tools->maven设置
    • Maven home directory: 自己安装位置
    • User setting file: 配置文件位置(安装位置下面)
    • Local repository: 本地仓库位置
  2. settings->Build Tools->maven->runner设置本地仓库优先
    • VM Options: -DarchetypeCatalog=internal

创建项目

创建JavaWeb工程:具体参考https://blog.csdn.net/qq_41855420/article/details/104130925

  1. new project->maven->使用maven工程提供的模板

    • 选择Create from archetype
    • 选择org.apache.maven.archetypes:maven-archetype-webapp
  2. 设置项目名、maven安装位置、配置文件、本地仓库(检查是否和上面一致)。

  3. 在src/main下面创建两个文件夹javaresources

    • 右键java->mark directory as->sources root
    • 右键resources->mark directory as->resources root
    --.settings // 工具生成的文件
    --src  // 源代码
    	--main //
    		--java		 // 项目源码
    		--resources	 // 配置文件
    		--webapp	 // web页面
    	--test
    		--java		// 测试源码
    		--resources	// 测试的配置文件
    --target // 编译生成的文件
    pom.xml // maven配置文件
    
  4. 创建一个servlet,并集成HttpServlet(此时不能继承,因为新工程还没有jar包)

    • 在web.xml中配置servlet访问路径(先不用注解形式)

      <servlet>
          <servlet-name>helloServlet</servlet-name>
          <servlet-class>baidu.HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
          <servlet-name>helloServlet</servlet-name>
          <url-pattern>/maven</url-pattern>
        </servlet-mapping>
      
  5. 打开pom.xml文件,添加项目所依赖的jar包(从网上搜索)

    <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
    </dependency>
    <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
    </dependency>
    
  6. 设置maven的插件(tomcat)

    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
          <port>8080</port>
          <uriEncoding>UTF-8</uriEncoding>
      </configuration>
    </plugin>
    
  7. 编写servlet,如req.getRequestDispatcher("/hello.jsp").forward(req, resp);

  8. IDEA右侧有一个maven面板,里面有许多命令,如果没有找到execute maven goal,并执行命令tomcan7:run

  9. 点击链接即可访问

访问数据库

如果想要访问mysql数据库,一般项目是先导入连接数据库的jar包,对于maven,就是写配置文件:

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

常用命令

执行maven命令,需要进入项目的根目录

  1. 清楚:mvn clean (新环境,都需要先清楚)
  2. 编译:mvn compile 生成targe文件夹,里面都是编译文件
  3. 测试:mvn test 执行src/test/java下的所有单元测试
  4. 打包:mvn package 将java工程打包成jar包,将web工程打包成war包(到target文件夹)
  5. 安装:mvn install 打包并发布到本地仓库(本地仓库中会有 自己定义的包的路径)
  6. 发布:mvn deploy 部署之前需要设置配置文件(先跳过这里)

声明周期:(了解)

  • 清理生命周期:上面第一个命令,构建项目之前进行清理工作
  • 默认声明周期:上面2-6个命令,也是核心部分
  • site声明周期:生成项目报告、站点,发布站点。

配置文件

pom.xml是Maven项目的核心配置文件,主要内容有

<project>
    <groupId>项目名称/域名 com.baidu</groupId>
    <artifactId>模块名称</artifactId>
    <version>项目版本号</version>
    <packaging >项目打包类型</packaging>
    <name>项目文档的名字</name>。
    <properties>可能是JDK版本</properties>
    <dependencies>项目依赖的包</dependencies>
	<build><plugins>项目依赖的插件</plugins></build>
</project>

依赖的包(Maven叫坐标,个人理解成指针):

<dependency>
  <groupId>来源</groupId>
  <artifactId>包名</artifactId>
  <version>版本</version>
  <scope>作用范围</scope>
</dependency>

作用范围有五个,默认compile

作用范围		编译		测试		运行
compile			y		 y		   y
provided		y		 y		   -
runtime			-		 -		   y
test			-		 y		   -
sytem			y		 y		   -

项目依赖的插件,如tomcat

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8080</port>
    <uriEncoding>UTF-8</uriEncoding>
  </configuration>
</plugin>