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输入参数,该参数代表跳过对测试环境的打包

原文地址:https://www.cnblogs.com/eastDong/p/15017390.html