• Maven笔记


    Maven笔记

    1.简要说明

    学习地址:https://www.bilibili.com/video/BV1Fz4y167p5

    帮助下载jar包,加入插件,防止IDEA和Eclipse目录结构不同导致的问题。

    主要通过在中加入以下内容完成

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>   这个是公司及项目
        <artifactId>spring-webmvc</artifactId>   这个是项目下的模块
        <version>5.3.9</version>           这个是版本号
    </dependency> 
    
    

    上述内容可以从https://mvnrepository.com/网站去搜索(百度搜索maven,第一个一般就是)

    常用目录结构:

    ${basedir}
            |-- pom.xml
            |-- src
                | |-- main
                    | | -- java
                            || com.xxx.xxx 项目源码
                    | | `-- resources
                            || 项目配置文件 .xml等
                    | | `-- filters
                | | `-- test
                    | | `-- java
                    | | `-- resources
                    | | `-- filters
    
    • src/main/java 项目的源代码所在的目录

    • src/main/resources 项目的资源文件所在的目录

    • src/main/filters 项目的资源过滤文件所在的目录

    • src/main/webapp 如果是web项目,则该目录是web应用源代码所在的目录,比如html文件和web.xml等都在该目录下。

    • src/test/java 测试代码所在的目录

    • src/test/resources 测试相关的资源文件所在的目录

    • src/test/filters 测试相关的资源过滤文件所在的目录

      详细介绍:https://zhuanlan.zhihu.com/p/98456775

    2.安装教程

    <localRepository>/path/to/local/repo</localRepository>
    
    <!--如保存在F盘的repository目录下,注意这里是正斜杠-->
    <localRepository>F:/repository</localRepository>
    

    配置二:更改下载服务器地址(外国下的慢,改成阿里云服务器)(注意要放在两个mirrors标签之间)

    这两个仓库只用选一个(根据大家反馈建议使用第一个,第二个在有的版本可能会出现warning),将其内容复制到两个mirrors标签之间

     <!-- 阿里云仓库 -->
            <mirror>
                <id>alimaven</id>
                <mirrorOf>central</mirrorOf>
                <name>aliyun maven</name>
                <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
            </mirror>
         或者
          <mirror>
    		<id>nexus-aliyun</id>
    		<mirrorOf>*</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    	 </mirror>
    
    
    

    配置三:配置jdk版本(应该是可选的,不配也能用)(注意夹在两个profiles标签之间(我这里使用的为jdk8))

    <!-- java版本 --> 
    <profile>
          <id>jdk-1.8</id>
          <activation>
    	    <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
          </activation>
    
          <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
    		<maven.compiler.target>1.8</maven.compiler.target>
    		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
          </properties>
    </profile>
    
    
    

    配置完成,在命令行输入mvn help:system测试,看到下载链接里面是ailiyun的链接表示配置成功

    3.POM文件中标签介绍

    IDEA等IDE会自动在POM中写上常用的标签,我们只需要在中加

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>   这个是公司及项目
        <artifactId>spring-webmvc</artifactId>   这个是项目下的模块
        <version>5.3.9</version>           这个是版本号
    </dependency> 
    

    POM内标签详细介绍:https://www.runoob.com/maven/maven-pom.html(底部有POM 标签大全详解)

    4.Maven命令

    Maven命令格式: mvn [plugin-name] : [goal-name] //即执行plugin-name插件的goal-name目标

    运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xm1文件所在的目录。否则,必以通过参数来指定项目的目录。

    同时可以用 -D 传入属性参数, 如:

    mvn package -Dmaven.test.skip=true //让maven打包时跳过单元测试

    同时可以用 -P 指定Profile配置(对开发,测试,预发,正式等不同环境,在pom中有不同配置), 如:

    mvn package -Pdev -Dmaven.test.skip=true//让profile的id标签为dev的环境打包,并跳过单元测试

    • mvn compile //在mvn的根目录下输入,会编译java文件
    • mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello" 执行根目录下,此位置的java文件的main方法
    • mvn -version 显示版本信息
    • mvn clean 清理项目生产的临时文件,一般是模块下的target目录
    • mvn compile 编译源代码,一般编译模块下的src/main/java目录
    • mvn package 项目打包工具会在模块下的target目录生成jar或war等文件
    • mvn test 测试命令,或执行src/test/java/下junit的测试用例.
    • mvn install 将打包的jar/war文件复制到你的本地仓库中供其他模块使用
    • mvn deploy 将打包的文件发布到远程参考提供其他人员进行下载依赖
    • myn site 生成项目相关信息的网站
    • mvn eclipse:eclipse 将项目转化为Eclipse项目
    • mvn dependency:tree 打印出项目的整个依赖树
    • mvn archetype:generate 创建Maven的普通java项目
    • mvn tomcat7:run 在tomcat容器中运行web应用
    • mvn jetty:run 调用letty插件的Run目标在lettyServlet容器中启动web应用

    5.IDEA中使用Maven

    • 配置环境:file->New Project Setting(全局设置,setting只对当前项目有效)->setting for new Project。然后在打开的对话框找到maven(在Build,execution,Deployment的Build Tools下)。配置 maven home path为你的maven根目录,然后配置User settings file 为你的maven的setting。然后local repository为你的本地仓库地址(一般会根据setting自动更新)记得给后面都打上对号。
    • 创建Maven项目:新建一个maven项目,然后根据模板(creat那一句选上,普通java项目为quickstart web项目为webapp)创建,然后给不同的目录创建不同的属性(mark directory as)
    • 运行Maven项目:一般的编译运行,可以通过右侧maven的选项直接用,复杂的可以在运行那儿add configurations 然后点加号,然后选择maven,然后输入maven命令如 compile。(jetty:run)(tomcat7:run)

    pom中还要确定用的java版本等内容(改为jdk8),webapp下很多插件好像用不到(可以把标签下内容全部删掉)(junit版本改为4.12)。

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    

    jar包如mysql放到标签下,一般去https://mvnrepository.com/这里去搜索

    Tomcat放到标签下,一般在Tomcat官网搜配置(百度直接搜Tomcat Maven一般第一项就是)(服务器也可以选jetty).除了下包外,还可以写访问路径,端口等。如:

    <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
    
                <configuration>                
                    <path>/</path> <!-- 项目访问路径 本例:localhost:9090, 如果配置的aa,则访问路径为localhost:9090/aa -->
                    <port>9090</port>
                    <uriEncoding>UTF-8</uriEncoding><!-- 非必需项 -->
                </configuration>
            </plugin>
    

    多个模块互相依赖

    一个项目有多个模块,让一个模块可以import另一个模块的方法:在该pom文件加以下内容,其中groupID等内容可以直接去要引入模块对应的pom文件直接复制,我这个是mavenWebDemo模块。

    <dependency>
          <groupId>org.example</groupId>
          <artifactId>mavenWebDemo</artifactId>
          <version>1.0-SNAPSHOT</version>
    </dependency>
    

    此时不会报错,但是不能运行,运行需要对各个模块,新建maven命令install(即对每一个模块,运行处选择添加,然后点加号,点maven,输入install命令),然后对每个maven命令执行一下,最后在启动服务器。(要先install 父项目,然后才能安装子工程,不然的话安装会失败的)(该项目结构是一个父项目,父项目右键新建了3个模块)

    Maven的打包操作

    • 首先建好对应目录结构,写好代码(在resources目录下,对应不同的应用场景有不同的配置,如开发用的dev目录,下面是数据库配置等。再如测试用的test目录,下面也有数据库及配置)

    • 配置打包环境即将放在下,一般放在上方

      <profiles>
          <profile>
              <id>dev</id>
              <properties>
                  <env>dev</env>   这个值一般和各个环境资源目录对应文件名一致
              </properties>
              <activation>
                  <activeByDefault>true</activeByDefault>  默认打包是这个环境
              </activation>
          </profile>
          <profile>
              <id>test</id>
              <properties>
                  <env>test</env>   这个值一般和对应文件名一致
              </properties>
          </profile>
      </profiles>
      
    • 标签下放标签

      <resources>
          <resource>
              <directory>src/main/resources/${env}</directory>  确定是哪个资源目录
          </resource>
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
                  <include>**/*.properties</include>
                  <include>**/*.tld</include>
              </includes>
              <filtering>false</filtering>
          </resource>
      </resources>
      
    • 添加maven命令,在command line输入:

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

      对dev环境进行打包 -P指定打包环境dev -D输入参数,该参数代表跳过对测试环境的打包

  • 相关阅读:
    一个Java对象到底占用多大内存
    Java 动态代理机制分析及扩展
    JVM内幕:Java虚拟机详解
    深度分析 Java 的 ClassLoader 机制(源码级别)
    Java异常的深入研究与分析
    HashMap的工作原理
    Java枚举常见7种用法
    left join 过滤条件写在on后面和写在where 后面的区别
    mysql left( right ) join使用on 与where 筛选的差异
    SQL索引优化
  • 原文地址:https://www.cnblogs.com/eastDong/p/15017390.html
Copyright © 2020-2023  润新知