Maven介绍

Maven项目管理整合

1.Maven概念

Maven是一个项目管理与整合工具.

目的是:基于工程对象模型(POM)的概念,通过一个中央信息管理模块(很小的描述文件)来构造一个可复用、可维护、更易理解的工程综合模型

约定优于配置:Maven提供了合理的默认配置

配置项 默认值
source code ${basedir}/src/main/java
resources   ${basedir}/src/main/resources
Tests   ${basedir}/src/test
Complied byte code  ${basedir}/target
distributable JAR   ${basedir}/target/classes

2.用途

如下:

构建
文档生成
报告
依赖
SCMs
发布
分发
邮件列表

3.原理(还没搞懂)

4.使用步骤

下载完maven,配置好环境变量,再eclipse中
新建项目
配置pom.xml
pom.xm->run as install

5.知识点

一个工程只能有一个pom.xml,其根标签为project

Maven使用三个坐标来定位一个工程:groupId,artifactId,version

SuperPOM

所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)
SuperPOM demo:

0.环境变量
1.创建一个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.companyname.project-group</groupId>
<artifactId>project</artifactId>
<version>1.0</version>  
</project>
2.执行 mvn help:effective-pom(5分钟后…)
[INFO]
Effective POMs, after inheritance, interpolation, and profiles are applied:

<?xml version="1.0" encoding="GBK"?>
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Generated by Maven Help Plugin on 2018-04-24T22:14:00+08:00            -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/                -->
<!--                                                                        -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Effective POM for project                                              -->
<!-- 'com.companyname.project-group:project:jar:1.0'                        -->
<!--                                                                        -->
<!-- ====================================================================== -->
<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>
...此处省略几百行  
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:35 min
[INFO] Finished at: 2018-04-24T22:14:01+08:00
[INFO] ------------------------------------------------------------------------

仓库:
Maven 仓库有三种类型:
本地(local)
中央(central)
远程(remote):用户设定的
先本地,再中央,如果设置了远程中央找不到会去远程找.

构建一个简单的java项目(quickStart)

mvn archetype:generate
然后按要求输入相关的配置:
(1)可以跳过filter:
(2)然后按要求输入:
a.版本号

b.groupId

c:artifactId

d:version

e:package:可跳过

f:Y:确认

构造完的pom如下:

<?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>luhao</groupId>
  <artifactId>MyFirstMavenProject0424</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>MyFirstMavenProject0424</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>


文件夹结构 描述
consumerBanking 包含 src 文件夹和 pom.xml
src/main/java contains java 代码文件在包结构下(com/companyName/bank)。
src/main/test contains 测试代码文件在包结构下(com/companyName/bank)。
src/main/resources 包含了 图片 / 属性 文件(在上面的例子中,我们需要手动创建这个结构)。

然后执行:C:\Users\43608\Desktop\mavenTest\test1\MyFirstMavenProject0424>mvn clean package

外部依赖

Maven依赖管理

功能 功能描述
依赖调节 决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。 如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。
依赖管理 直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的以来管理模块包含工程 B,即 B 依赖于 A, 那么 A 即可指定在 B 被引用时所使用的版本。
依赖范围 包含在构建过程每个阶段的依赖。
依赖排除 任何可传递的依赖都可以通过 “exclusion” 元素被排除在外。举例说明,A 依赖 B, B 依赖 C,因此 A 可以标记 C 为 “被排除的”。
依赖可选 任何可传递的依赖可以被标记为可选的,通过使用 “optional” 元素。例如:A 依赖 B, B 依赖 C。因此,B 可以标记 C 为可选的, 这样 A 就可以不再使用 C。

猜你喜欢

转载自blog.csdn.net/howroad/article/details/80089729
今日推荐