maven学习和maven聚合工程搭建

1.学习maven

maven的概念

项目管理工具 ,对jar进行依赖管理,编译,打包,单元测试,安装,部署,贯穿整个项目

为什么要学maven

要解决的问题:

  • 不同的开发工具开发出来的项目目录结构不一样,导致不能相互导。
  • 每次从svn服务器检出项目因为 jar包太多了导致速度很慢
  • 项目使用的jar包版本每次下载和升级好麻烦,得自己寻找jar包的下载地址,找到了不一定能下,下载下来版本不一定对。

maven使命:

  • ide解耦
  • 统一jar包资源路径
  • 版本管理
  • 统一项目结构
  • 第三方良好的集成

下载地址:
http://maven.apache.org

maven仓库

  • 1、本地仓库 : 相当于缓存。本地仓库存储在本地的磁盘当中,里面存放的是经常使用的jar包。
  • 2、 远程仓库 : 也叫做私服。基本每个公司都会有自己的私服,当本地的磁盘中不存在需要的jar包资源,则会请求私服进行资源下载。
  • 3、 中央仓库 : 远程仓库,由jar专业团队统一维护。

maven的使用

使用maven前需要先配置好jdk

  • 配置环境变量

maven学习和maven聚合工程搭建_第1张图片
maven学习和maven聚合工程搭建_第2张图片
maven学习和maven聚合工程搭建_第3张图片

  • 修改maven的配置文件settings.xml

1.配置本地库的位置
maven学习和maven聚合工程搭建_第4张图片
2.配置阿里云镜像

<mirror> 
		<id>alimavenid> 
		<name>aliyun mavenname> 
		<url>http://maven.aliyun.com/nexus/content/groups/public/url> 
		<mirrorOf>centralmirrorOf> 
	mirror> 
 

3.配置jdk版本

<profile>
      <id>jdk-1.8id>

      <activation>
		<activeByDefault>trueactiveByDefault>
        <jdk>1.8jdk>
      activation>

     <properties>
		<maven.compiler.source>1.8maven.compiler.source>    
        <maven.compiler.target>1.8maven.compiler.target>    
        <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>   
      properties>
    profile>

idea创建maven项目

建议不用选骨架,可以直接选maven创建项目后自己手动修改pom文件

idea集成maven

一定要全局设计IDEA的Maven配置
maven学习和maven聚合工程搭建_第5张图片
maven学习和maven聚合工程搭建_第6张图片
maven学习和maven聚合工程搭建_第7张图片

什么是gav坐标

maven学习和maven聚合工程搭建_第8张图片
根据gav坐标找对应的jar包。

比如:mysql驱动包
g:mysql
a:mysql-connector-java
v:8.0.22

改pom文件

POM(project object model)是Maven对一个单一项目的描述

  • packaging不写的话,默认是打jar包,对于开发web项目的话,要写成war
 <packaging>warpackaging>
  • 对于web项目的话,要在src下的main下建webapp,然后刷新下maven。

maven学习和maven聚合工程搭建_第9张图片
maven学习和maven聚合工程搭建_第10张图片

  • 写各种jar包依赖

可以去maven中央仓库去搜需要用的jar。网址:https://mvnrepository.com/

  • 对于sql映射文件是跟dao接口在一起的情况,部署项目的时候默认是不会把sql映射文件打进去的,解决如下:

maven学习和maven聚合工程搭建_第11张图片

 <build>

        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
            resource>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.xmlinclude>
                includes>
            resource>
        resources>

当然我习惯把sql映射文件单独放到resources下的mapper文件夹的,就不用操心这个问题

将之前的ssm项目改成maven项目

<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.0modelVersion>

    <groupId>com.jf3qgroupId>
    <artifactId>maven_demoartifactId>
    <version>1.0-SNAPSHOTversion>

    <packaging>warpackaging>
    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.16version>
        dependency>
        <dependency>
            <groupId>commons-poolgroupId>
            <artifactId>commons-poolartifactId>
            <version>1.6version>
        dependency>
        <dependency>
            <groupId>commons-dbcpgroupId>
            <artifactId>commons-dbcpartifactId>
            <version>1.4version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.1version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>2.0.3version>
        dependency>
        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>5.3.1version>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.11.1version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.11.1version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.11.1version>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.2version>
        dependency>

        
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.2.2version>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>2.4version>
        dependency>


        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>

        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.25version>
        dependency>
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.17version>
        dependency>

        
        <dependency>
            <groupId>aopalliancegroupId>
            <artifactId>aopallianceartifactId>
            <version>1.0version>
        dependency>
        
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.6.9version>
        dependency>

        
        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>4.0.0version>
            <scope>providedscope>
        dependency>

    dependencies>




project>

maven的常用命令

  • mvn compile --只编译main目录中的java文件
  • mvn test  测试,运行的是test/java中的代码
  • mvn package 打成 jar/war包,放在项目的target文件夹中
  • mvn install 将开发的模块放入本地仓库,供其他模块使用(放入的位置,是通过gav决定)
  • mvn clean 删除target目录(删除编译文件目录)
  • mvn deploy 将项目部署到Tomcat中,然后即可运行。

执行mvn命令:必须在pom.xml所在目录执行

2.maven聚合工程搭建

概念

多模块开发。多团队协同开发,分布式开发

案例

app项目为例,
maven学习和maven聚合工程搭建_第12张图片
maven学习和maven聚合工程搭建_第13张图片
10个人负责开发管理员端 A队 Tomcat是81端口,10个人负责开发 开发者端 B队 Tomcat是82端口
maven学习和maven聚合工程搭建_第14张图片
其中app-common是公共的,打jar包,dev和admin都要依赖他,要理解maven依赖的传递性。app-dev和app-admin都是打war包,用不同端口的Tomcat跑起来。
admin模块截图
maven学习和maven聚合工程搭建_第15张图片
dev模块截图
maven学习和maven聚合工程搭建_第16张图片

各模块的pom

父级:

 
<packaging>pompackaging>

<modules>
    <module>app-adminmodule>
    <module>app-devmodule>
    <module>app-commonmodule>
modules>

<dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>5.2.2.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.16version>
        dependency>
        <dependency>
            <groupId>commons-poolgroupId>
            <artifactId>commons-poolartifactId>
            <version>1.6version>
        dependency>
        <dependency>
            <groupId>commons-dbcpgroupId>
            <artifactId>commons-dbcpartifactId>
            <version>1.4version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.1version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>2.0.3version>
        dependency>
        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>5.3.1version>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.11.1version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.11.1version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.11.1version>
        dependency>
        
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.2.2version>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>2.4version>
        dependency>


        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>

        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.25version>
        dependency>
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.17version>
        dependency>

        
        <dependency>
            <groupId>aopalliancegroupId>
            <artifactId>aopallianceartifactId>
            <version>1.0version>
        dependency>
        
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.6.9version>
        dependency>

        
        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>4.0.0version>
            <scope>providedscope>
        dependency>
    dependencies>

common:公共模块,一般是工具类,实体类,dao层

 <packaging>jarpackaging>

<dependencies>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.26version>
        dependency>

    dependencies>
 <build>
			
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
            resource>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.xmlinclude>
                includes>
            resource>
        resources>
    build>

dev:开发者模块

<packaging>warpackaging>


  <dependencies>
      
      <dependency>
          <groupId>com.jf3qgroupId>
          <artifactId>app-commonartifactId>
          <version>1.0-SNAPSHOTversion>
      dependency>
      
  dependencies>

admin:管理员模块

<packaging>warpackaging>


  <dependencies>
      
      <dependency>
          <groupId>com.jf3qgroupId>
          <artifactId>app-commonartifactId>
          <version>1.0-SNAPSHOTversion>
      dependency>
      
  dependencies>

作业:

1.把app项目改成单模块的maven项目

2.把app项目改成多模块的maven项目

你可能感兴趣的:(java,maven,学习,java)