MAVEN下载和配置,创建多模块项目以及项目打包操作

本文详细介绍了Maven的作用,包括依赖管理、插件集成和项目构建一致性。讲解了Maven的下载配置,强调了环境变量设置及阿里云中央仓库的配置。接着展示了在IDEA中创建多模块项目的过程,以及各模块间的依赖配置。还提到了资源过滤、打包操作和POM配置。最后讨论了Maven依赖的范围以及POM的重要性。
摘要由CSDN通过智能技术生成
Maven 的作用:
  1. Maven 统一集中管理好所有的依赖包,不需要再去寻找。
  2. 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
  3. Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
  4. Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。
Maven的下载和配置

maven官网下载地址 :http://maven.apache.org/download.cgi
在这里插入图片描述下载之后可以放在本地磁盘里面,最好不要放C盘,路径不要太复杂 ,放好后解压,
解压之后创建一个repository文件夹作为本地仓库,以后项目在通过pom.xml文件加载jar包的过程中,首先会到本地仓库找jar包,如果没有,则会根据setting.xml文件配置的中央仓库联网下载。
在这里插入图片描述
接下来去配置环境变量,把maven可执行文件的bin目录路径复制下来,在环境变量里面新增一个MAVEN_HOME,然后把MAVEN_HOME添加到path环境变量中
在这里插入图片描述

在这里插入图片描述
然后去conf目录里面设置settings.xml文件
在这里插入图片描述
第一步是本地仓库的配置,打开setting.xml,找到/path/to/local/repo这一行 复制下来, 把地址改写成刚刚建立的repository文件夹的地址
在这里插入图片描述
下一步配置中央仓库,改成阿里的,切记看好位置 在mirrors里面,默认是外网的 ,访问量较大,且速度慢
在这里插入图片描述

<mirror>
		<id>aliyunmaven</id>
		<mirrorOf>*</mirrorOf>
		<name>阿里云公共仓库</name>
		<url>https://maven.aliyun.com/repository/public</url>
	</mirror>

弄好记得保存
接下来可以去DOS命令行窗口验证安装成功没,有版本号出来就可以了
输入命令:mvn -v
在这里插入图片描述

IDEA配置maven

在这里插入图片描述
在这里插入图片描述

创建多模块项目(以四个模块为例)
maven_parent         基模块(parent)
maven_dao             数据库访问层
maven_service        业务逻辑层
maven_controller     接收数据,响应数据

** 1.创建maven_parent项目**
在这里插入图片描述
在这里插入图片描述

2.新创建maven_dao 模块
在maven_parent项目上右键新建Module
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里只需要改Artifactic
在这里插入图片描述
3.新建maven_service 模块
步骤与maven_dao一致
4.新建maven_service 模块
步骤与maven_dao基本一致, 只是在选择模板时设置为web项目即可
在这里插入图片描述
创建好之后是这个样子的,在parent的pom.xml
在这里插入图片描述

接下来修改三个子模块的pom.xml文件

(三个子模块都一样操作)
1.修改jdk版本(这里是用的是jdk1.8 就修改成1.8)
2.设置junit版本
3.删除pluginManagement模块

在这里插入图片描述
接下来去三个模块中分别建立包和类
在这里插入图片描述
在service中调用Dao的方法,controller中调用service的方法,并且添加依赖,
添加依赖的方法(以把DAO添加到Service中为例)
在DAO中的pom.xml文件里面把下面几行复制出来,放到Service 中的pom.xml文件的dependence中去

<groupId>com.tcgroup</groupId>
  <artifactId>maven_service</artifactId>
  <version>1.0-SNAPSHOT</version>

在这里插入图片描述
同理把service添加到controller的依赖里面

因为controller还需要使用servlet和Tomcat服务器, 所以需要引入servlet的依赖,部署Tomcat服务器

<!--  引入servlet的依赖  -->
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
</dependency>

<!--  构建Tomcat  -->
<plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <path>/web</path>
          <uriEncoding>UTF-8</uriEncoding>
          <server>tomcat7</server>
        </configuration>
      </plugin>
 </plugins>

接下来可以尝试运行了
在这里插入图片描述

如果失败可以吧所有模块都用install命令启动一下 从DAO到Parent
Maven install 安装指令,其做了两件事情:

  1. 将项目打包(jar/war),将打包结果放到项目下的 target 目录下
  2. 同时将上述打包结果放到本地仓库的相应目录中,供其他项目或模块引用

都成功之后再去启动Tomcat,一般就没有什么问题了

maven 的项目打包操作(以打包mavenController为例)

1. 给resources文件夹下面添加一些不同环境的配置文件

在这里插入图片描述

2. 添加profile配置

在pom.xml文件里面添加

 <profiles>
        <profile>
            <!-- 开发环境 -->
            <id>dev</id>
            <properties>
                <environment>dev</environment>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->
            </activation>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <environment>test</environment>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>product</id>
            <properties>
                <environment>product</environment>
            </properties>
        </profile>
    </profiles>
3.设置资源文件配置

对于项目资源文件的配置放在build里面

<resources>
            <resource>
                <directory>src/main/resources/${env}</directory>
            </resource>
            <resource>
                <!--    找 src/main/java路径下面的文件         -->
                <directory>src/main/java</directory>
                <!--    包含的文件格式         -->
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.tld</include>
                </includes>
                <!--  不进行过滤         -->
                <filtering>false</filtering>
            </resource>
        </resources>
4.执行打包操作

打开Run/Debug Configurations 窗口 输入打包命令
在这里插入图片描述
可以直接用package命令打包所有环境下的配置文件
也可以通过打包命令mvn package -Pdev来指定激活id为 dev 的profile节点, 这样, 开发环境配置文件就会被打包.
还能再前面加上clean compile命令先清空之前的缓存, 编译之后在打包
以后项目发布的时候也可以通过-Dmaven.test.skip=true 设置跳过test环境的配置文件

clean compile package -Pdev -Dmaven.test.skip=true

打包好之后会在target目录下生成对应的war包
在这里插入图片描述

maven依赖的基本配置

Maven依赖的坐标

Maven的仓库中拥有着无数的构件,每一个构件都是一个jar或者war等文件,如果没有坐标,那么我们将无法唯一标识该构件,结果就是Maven将无法帮助我们自动下载构件。所以,Maven定义了一组规则:世界上任何一个构件都可以使用Maven坐标来唯一标识。Maven坐标的主要元素包括groupId,artifactId,version,packaging(可选)和classifier(可选),通过这些元素,我们可以明确标识任何一个构件。

groupId:该元素定义了当前Maven项目隶属的实际项目,一般情况下该项元素都与公司域名相对应,比如com.taobao.

artifactId:该元素定义了实际项目中的一个Maven Module

version:该元素表示当前构件的版本,包括稳定(release)版本和测试(snapshot)版本

packaging:该元素定义Maven项目的打包方式,默认为jar,还有war和pom方式

classifer:该元素用来帮助定义构件输出的一些附属构件,例如通过配置插件,可以在打包的同时生成-javadoc.jar和sources.jar 等构件。

依赖的范围(scope)

有如下几种:

 	**compile**:(默认值)
			编译范围有效,编译和运行(打包)时都会将依赖存进去
	**test**:
	  指测试范围有效,编译和打包时都不使用该依赖。
	**provided**:
	  测试、编译范围都有效,最后生成war包时不会加入,例如:servlet-api,编译的时候需要该文件,但是在打包的时候不需要把这个 jar 文件打在 WAR 中,因为servlet容器或者应用服务器会提供的。打进去会出现冲突。
	**runtime**:
	       编译时不依赖,运行(打包)时依赖
   ** System**:系统依赖范围
    		一般不使用
Maven POM

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。

<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">
 
    <!-- 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version>
</project>

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。(可以去网上搜超级POM看各种标签什么意思)
在这里插入图片描述

常见问题

资源过滤问题

maven由于约定大于配置,可能遇到写的配置文件无法被导出或者生效的问题(target目录里面没有),解决方法:在pom.xml添加下面配置(子项目父项目里面都放一下)

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值