zoukankan      html  css  js  c++  java
  • Maven的具体使用和优点

    1.Apache软件基金会提供的项目自动化构建和项目管理软件。

       基于项目对象模型(POM)概念,Maven利用一个中央信息片段能管理一个项目的构建、报告、文档等步骤。

       官方网站:http://maven.apache.org/ 

    2.(1)方便jar包管理;

       (2)开发工具不同,项目结构可能不同,maven可统一项目结构;

       (3)每个项目都要用的核心代码包(自己写的工具包),单独列出一个工程叫核心包,打成一个jar包,让七八个工程直接引用jar包就行了,但若核心包升级了还得手动更新,maven可以解决该问题;

    3.使用前提:

          (1)下载 

             http://maven.apache.org/download.cgi 

          (2) 配置环境变量 (系统变量)
             M2_HOME = maven根路径 
             PATH = maven根路径/bin 
          (3) 执行maven命令 
             mvn -v 显示maven版本信息

    4.bin文件:可执行的文件,

                   bat文件:批处理文件;

    5.maven工程 

    my-app
    |-- pom.xml
    `-- src
      |-- main
        | `-- java
          | `-- com
            | `-- mycompany
              | `-- app
                | `-- App.java
      `-- test
        `-- java
          `-- com
            `-- mycompany
              `-- app
                `-- AppTest.java

    6.pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <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>

      <groupId>com.mycompany.app</groupId> <!--公司所做项目名称-->
      <artifactId>my-app</artifactId> <!--模块的名称-->
      <version>1.0-SNAPSHOT</version> <!--版本号-->

    </project>

    groupId:公司所做的项目的名称
    artifactId:模块的名称
    version:版本号

    groupId + artifactId + version = 坐标

    7.编译代码

      >d:(切换到d盘)
      >cd myapp (进入到某个文件)
      >mvn compile

      编译后产生target目录,里面存放的就是编译后的字节码文件

    注意:编译只会编译main文件里的Java程序;所以不会编译test文件里的测试程序;

       mkdir  新文件夹名称

    8.执行单元测试
    mvn test


    http://mvnrepository.com/ (查询坐标)


    在pom.xml添加对junit的依赖

    <!--配置当前项目对第三方jar的依赖-->
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.2</version>
      </dependency>
    </dependencies>

    9.清除target
      mvn clean

    10.打包 (Java源代码打成jar包)
      mvn package

    11.到本地仓库中
      mvn install

    12.修改本地仓库位置
    默认位置在操作的系统的~/.m2文件夹中,修改方式如下: (~:当前用户的文件夹)
    1.  取消mavenhome/conf/settings.xml配置文件中的注释的该行代码:
    <localRepository>/path/to/local/repo</localRepository>
    2.  将其中的路径修改为自己希望的路径
    <localRepository>D:/maven/repo</localRepository>
    3.  并将settings.xml文件拷贝一份到D:/maven目录中

    13.maven查找依赖的顺序
      1.  从本地仓库中查找所需要的依赖
      2.  从私有仓库中查找所需要的依赖
      3.  从中央仓库(http://repo.maven.apache.org/)中查找所需要的依赖
        本地仓库→  私有仓库→  中央仓库

    14.没有任何开发工具的情况下使用maven:

      使用Archetype快速创建项目
        mvn archetype:generate
        在输出的交互式命令中输入坐标即可创建
        或
        mvn archetype:generate -DgroupId=com.kaishengit.pms -DartifactId=myapp2 -Dversion=1.0.0-
        SNAPSHOT

    15.eclipse开发工具安装插件:M2Eclipse,然后才能使用maven(版本在10以上该插件是自带的)

        使用M2Eclipse插件创建项目
        http://eclipse.org/m2e/

        将下载好的插件→放入dropins文件夹(myeclipse安装路径中的)即可;

      注意:Windows→preferences→installations(add配置好环境变量的maven路径)→user settings(首先将maven config文件夹里的settings.xml复制到本地仓库        的路径)settings.xml路径

    16.先配好再建maven工程→maven build...→package(打包)→install(将该包发布到本地仓库)

      在另一个项目中要引用刚才那个项目的包→在另一个项目的pom.xml中添加依赖(引用包的坐标)

    17.maven的聚合 (多个maven项目想要同时执行maven的某个命令:先建一个新的maven项目,但pacakging 选择pom即该项目只有pom.xml文件)
    <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>
      <groupId>com.kaishengit</groupId>
      <artifactId>all</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>

      <modules>
        <module>../core</module> <!--通过该pom项目的路径找到core项目的路径-->
        <module>../dao</module>
      </modules>

    </project>

    18.scope 
      •  compile——编译(默认值,在编译、打包时使用)
      •  provided——编译和测试时使用的依赖,打包时不加入,例如servlet-api.jar
      •  runtime——运行时依赖,编译时不依赖,例如mysql.jar
      •  test——只有测试时依赖,编译和打包时不使用,例如junit.jar

    19.若在项目空间添加的Java文件在开发工具中刷新不出来:右键项目→properties→Java build path→source→add folder

    20.webapp项目典型的结构(若结构不全自己可以补全,通过19)

      ---src

        ---main

          ---java(源代码文件)

          ---resources(etc配置文件)

          ---webapp(webRoot)

        ---test

          ---java

          ---resources

    21.maven build → compile package(编译后打包的命令)

         得复制到tomcat的webapp下麻烦

    22.为了解决21的问题:jetty maven有个插件(wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin)

      pom.xml中的build节点的Plugins节点中plugin节点中添加依赖:命令jetty:run

      测试用jetty环境

    23.改端口号:在pom.xml中添加    

          web项目
          Jetty插件
          <build>
            <finalName>struts</finalName>
            <plugins>
              <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                  <scanIntervalSeconds>10</scanIntervalSeconds>
                  <webApp>
                    <contextPath>/</contextPath> <!--请求的路径-->localhost:9090/home.do
                  </webApp>
                  <connectors>
                    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                      <port>9090</port> <!--服务器端口号-->
                      <maxIdleTime>60000</maxIdleTime>
                    </connector>
                  </connectors>
                </configuration>
              </plugin>
            </plugins>
          </build>

    24.访问私服:http://url:端口号/nexus

    25.依赖传递和冲突
      •  依赖级别相同时,在dependency前面的会使用
      •  依赖级别不相同时,依赖路径短的会使用
      •  依赖传递只会传递compile级别的包
      •  排除依赖
      <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.15.1</version>
        <exclusions>
          <exclusion>
            <groupId></groupId>
            <artifactId></artifactId>
            </exclusion>
        </exclusions>
      </dependency>

    26.其他配置
      <properties>
        <junit.version>4.11</junit.version>
      </properties>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>

      </dependencies> 

  • 相关阅读:
    C#串口通信程序SerialPort类
    51单片机和PC串口异步通信
    Robotics ToolBox机械臂仿真
    51单片机和PC串口异步通信(续)
    谈谈FFT有何用
    volatile关键字的使用
    如何走好后面的路
    51单片机液晶显示计时器
    IDE86汇编语言环境使用
    不使用跳转的宏CV_IMIN分析
  • 原文地址:https://www.cnblogs.com/sunruntheway/p/4227062.html
Copyright © 2011-2022 走看看