zoukankan      html  css  js  c++  java
  • 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输入参数,该参数代表跳过对测试环境的打包

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/eastDong/p/15017390.html
Copyright © 2011-2022 走看看