• maven使用


    转:https://www.cnblogs.com/chenzhuantou/p/12032704.html

    Maven 简介

    维基百科上面说 Maven 是一个软件项目管理和自动构建工具。单从字面意思来看,我是不知道这是想要表达什么意思的。按照我的理解,Maven 其实就是一个开发工具,跟 IDEA 相辅相成。我们日常使用 IDEA 的编译项目的时候,其实就是在使用 Maven,只不过这些操作都被强大的 IDEA 隐藏了,造成我们在使用 IDEA,和 Maven 没有联系的错觉。

    Maven 的命令

    说命令行之前,容我说手几个专业的名词。

    groupId:包名

    artifactId:项目名称

    创建groupId 的 artifactId 被人们称为坐标,确实也是,一旦他们的值确定了,我们就可以根据他们的坐标找到他们。

    mvn -B archetype:generate 
    -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app    
    -Dartifac t Id=my-app

    这样maven就自动创建了一个带有 hello world 的 Maven 项目。包名是 com.mycompany.app; 项目名是 my-app。看到这里,我们就知道为什么 Maven 是项目构建工具了。我个人觉得 Maven 跟大前端的 npm 工具有相似的地方。

    编译:执行该命令就会生成一个 target 文件。文件夹里面就是编译后的内容。

    mvn compile

    清除:该命令主要是清除编译后产生的 target 文件夹

    mvn clean

    打包:该命令会将项目默认打成 jar 包,当然我们就也可以打成 war 包

    mvn package

    安装:该命令可以把项目打成 jar,放到本地仓库

    mvn install

     仓库

    要理解 Maven,仓库概念是必不可少的。

    项目需要的依赖都是从本地仓库里面拿到的,本地仓库就是自己的电脑,我们引入的各种依赖都放在本地仓库里面,一般依赖有问题的话,就是本地仓库的依赖没有。我们可以先把本地的对应的依赖删除,在试试,或许就可以了。
    从中,我们可以看到自建仓库,也就是我们说的私服,可以存放一些我们开发的基础包,从自建仓库引入依赖就比较快的,当然如果自建仓库里面没有我们需要的依赖,自建仓库就会发出请求,请求远程的中央仓库,中央仓库没有那就真的没有了。

     pom.xml

    现在是我们的重要任务出场了--POM. Maven 项目都会有一个 pom.xml 文件。

    这是一个最简单的 pom 文件。这个 pom 文件应该我们很熟悉了,引入依赖就是从这里引的。没什么好说的,所以说些其他的。

    包类型

    // war
    <packaging>jar</packaging> 

    该标签决定项目是 jar 包或者 war 包。一般来说,SpringBoot 项目会打成 war 包,然后放进 tomcat 运行。当然也可以 jar 包运行,毕竟 SpringBoot 内置了tomcat。

    添加资源

    <build>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
          </resource>
        </resources>
    </build>

    如果我们把一下文件,例如 xml 后缀的 mapper 文件放在 resources 里面,编译的时候会发现他们没有编译进去,是因为 标签默认是 false,我们需要 true。

    排除依赖

    <exclusions>
        <exclusion>
          <groupId>sample.ProjectE</groupId> <!-- Exclude Project-E from Project-B -->
          <artifactId>Project-E</artifactId>
        </exclusion>
    </exclusions>

    部署到远程

    <distributionManagement>
        <repository>
          <id>mycompany-repository</id>
          <name>MyCompany Repository</name>
          <url>scp://repository.mycompany.com/repository/maven2</url>
        </repository>
    </distributionManagement>

    当我们造好轮子之后,想部署到远程中央仓库,就添加上面标签。同时在 setting.xml(Maven 安装的目录下)添加以下

    <servers>
        <server>
          <id>mycompany-repository</id>
          <username>jvanzyl</username>
          <!-- Default value is ~/.ssh/id_dsa -->
          <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa)
          <passphrase>my_key_passphrase</passphrase>
        </server>
     </servers>

    多个模块

    如果我们想一次建造几个maven项目,也是没有问题的。比如有两个模块(my-app、my-webapp),目录如下

    +- pom.xml
    +- my-app
    | +- pom.xml
    | +- src
    |   +- main
    |     +- java
    +- my-webapp
    | +- pom.xml
    | +- src
    |   +- main
    |     +- webapp

    在顶层 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.mycompany.app</groupId>
      <artifactId>app</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
     
      <modules>
        <module>my-app</module>
        <module>my-webapp</module>
      </modules>
    </project>

    然后选一个做老大(webapp),在他的 pom 文件里加入 my-app 的依赖

    <dependencies>
        <dependency>
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
        ...
    </dependencies>

    然后再这两个项目(webapp、my-app)的 pom 文件里面加入顶层的 标签

    <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">
      <parent>
        <groupId>com.mycompany.app</groupId>
        <artifactId>app</artifactId>
        <version>1.0-SNAPSHOT</version>
     </parent>
     ...

    最后执行 mvn verify 命令,就会在老大项目(webapp)的 target 文件夹里生成 war 包。

  • 相关阅读:
    PHP木马免杀的一些总结
    regsvr32 bypass windows defender 新思路
    要点4:C的文件操作
    【Go语言探险】线上奇怪日志问题的排查
    Eclipse部署虚拟项目目录
    osgEarth使用笔记4——加载矢量数据
    three.js中的矩阵计算
    GDAL数据集写入空间坐标参考
    matlab 基础
    nginx 配置文件解读
  • 原文地址:https://www.cnblogs.com/jvStarBlog/p/12037017.html
Copyright © 2020-2023  润新知