首页 > 其他 > 详细

maven使用

时间:2019-12-13 20:11:55      阅读:99      评论:0      收藏:0      [点我收藏+]

转: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 包。

maven使用

原文:https://www.cnblogs.com/jvStarBlog/p/12037017.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!