maven学习笔记

简介: Maven简介 1. Maven的出发点 在进行软件开发的过程中,无论什么项目,采用何种技术,使用何种编程语言,我们 都要重复相同的开发步骤:编码,测试,打包,发布,文档。实际上这些步骤是完全重复性的工作。

Maven简介

1. Maven的出发点

在进行软件开发的过程中,无论什么项目,采用何种技术,使用何种编程语言,我们 都要重复相同的开发步骤:编码,测试,打包,发布,文档。实际上这些步骤是完全重复性的工作。那为什么让软件开发人员去重复这些工作?开发人员的主要任务 应该是关注商业逻辑并去实现它,而不是把时间浪费在学习如何在不同的环境中去打包,发布,。。。

Maven正是为了将开发人员从这些任务中解脱出来而诞生的。

 

2. Maven能做什么?

 Maven是由早期为Jakarta Turbine定制的构建工具发展而来的,现在成为了一个独立的软件项目管理工具。Maven能够:

1)理解并管理整个软件开发周期,重用标准的构建过程,比如:编译,测试,打包等。同时Maven还可以通过相应的元数据,重用构建逻辑到一个项目。

2)Maven负责整个项目的构建过程。开发人员只需要描述项目基本信息在一个配置文件中:pom.xml。也就是说,Maven的使用者只需要回答“What”而不是“How”。

 

3. Maven并不只是一个构建工具,她还可以提供:

1)声明式依赖性管理

2)集中的组件库管理

3)文档的自动生成

4)报告的自动生成

4. Maven设计原则

 1)Convention Over Configuration (约定优于配置)。在现实生活中,有很多常识性的东西,地球人都知道。比如说:如何过马路(红灯停绿灯行),如何开门,关门等。对于这些事情,人们已经有了默认的约定。

 

在软件开发过程中,道理也是类似的,如果我们事先约定好所有项目的目录结构,标 准开发过程(编译,测试,。。。),所有人都遵循这个约定。软件项目的管理就会变得简单很多。在现在流行的很多框架中,都使用了这个概念,比如EJB3和 Ruby on Rails。在Maven中默认的目录结构如下:

 

由上图可以看出以下几个标准的Maven目录:

src:源代码目录。所有的源代码都被放在了这个目录下。在这个目录下又包括了:

          1) main:所有的源代码放在这里。对于Java项目,还有一个下级子目录:java. 对于Flex项目则是flex,。。。

          2) test:所有的单元测试类放在这里。

target:所有编译过的类文件以及生成的打包文件(.jar, .war, ...)放在这里。

2)Reuse Build Logic (重用构建逻辑):Maven把构建逻辑封装到插件中来达到重用的目的。这样在Maven就有用于编译的插件,单元测试的插件,打包的插件,。。。Maven可以被理解成管理这些插件的框架。
3)Declarative Execution (声明式执行):Maven中所有的插件都是通过在POM中声明来定义的。Maven会理解所有在POM中的声明,并执行相应的插件。

5. 创建一个Maven项目

1) 下载Maven:http://maven.apache.org/

2) 解压缩下载的zip文件到本地目录下,比如:D:\Maven

3) 添加D:\Maven\bin到环境变量PATH中

4) 在命令行下运行: 

mvn -version  或者 mvn -v

你应该看到如下图所示的Maven版本号:

 

5) 运行如下命令创建一个Maven项目:

mvn archetype:create -DgroupId=net.jianxi.tutorials
                                    -DartifactId=helloworld
                                    -DpackageName=net.jianxi.tutorials

该项目的目录结构如下图所示:

 

现在就可以运行一些Maven命令了

编译: mvn compile

单元测试: mvn test

构建并打包: mvn package

清理: mvn clean

安装 mvn clean install

Maven教程初级篇02:pom.xml配置初步

1. 创建项目并更改项目基本配置信息

在命令行下运行如下命令创建一个项目:

1

mvn archetype:create -DgroupId=net.jianxi.tutorials    

2

        -DartifactId=numopers

 

3

    -DpackageName=net.jianxi.tutorials

4

    -Dversion=1.0

进入到numopers目录,打开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>net.jianxi.tutorials</groupId>
  <artifactId>numopers</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>numopers</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

其中:

groupId: 通常为项目的顶级包名。

artifactId: 通常为项目名

version:项目的版本号,在开发的不同阶段,你需要更改这个版本号。

packaging:项目发布时的打包类型。比如对于普通Java程序打包为jar文件;对于Java web项目则打包为war文件。

name:通常也是项目名

url:项目的主页。

2. 添加源代码

在你的项目的src\main\java\net\jianxi\tutorials目录下,删除原有的App.java, 添加一个新的Java源文件: NumOpers.java, 其源代码如下:

01

package net.jianxi.tutorials;

02

 

 

03

public class NumOpers

04

{

 

05

    public int add(int i, int j) {

06

        return i + j;

 

07

    }

08

     

 

09

    public int minus(int i, int j) {

10

        return i - j;

 

11

    }

12

}

之后可运行如下命令进行编译:

mvn compile

你应该可以看到如下结果:

 

3. 添加JUnit 4.x单元测试类

在你的项目的src\test\java\net\jianxi\tutorials目录下,删除原有的AppTest.java, 添加一个新的Java源文件: NumOpersTest.java, 其源代码如下:

01

package net.jianxi.tutorials;

02

 

 

03

import org.junit.* ;

04

import static org.junit.Assert.* ;

 

05

 

06

public class NumOpersTest {

 

07

    NumOpers no = new NumOpers();

08

 

 

09

    @Test

10

    public void testAdd() {

 

11

      assertEquals(no.add(3,5), 8);

12

    }

 

13

     

14

    @Test

 

15

    public void testMinus() {

16

      assertEquals(no.minus(10,5), 5);

 

17

    }  

18

}

4. 配置pom.xml限定JDK版本号为5, 并支持JUnit 4.7

修改后的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>net.jianxi.tutorials</groupId>
  <artifactId>numopers</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <name>numopers</name>
  <url>http://bluesfeng.javaeye.com</url>
 
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
   

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId><version>4.7</version><scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

现在你可以运行一下命令来自动测试了:

mvn test

如果测试通过,你可以看到如下结果:

 

相关文章
|
3月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
291 81
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
2月前
|
Java Devops 持续交付
Maven学习笔记(二):Maven基础(基于IDEA)
【10月更文挑战第1天】Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。上一篇简单介绍了Maven的基础知识,本文主要介绍IDEA上的实际使用场景。内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。仅供参考。
193 0
Maven学习笔记(二):Maven基础(基于IDEA)
|
4月前
|
Java jenkins Shell
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
|
4月前
|
Java 测试技术 Maven
Maven学习笔记
这篇文章是关于Maven的学习笔记,包括Maven简介、项目构建工具比较、Maven的四大属性(依赖管理、多模块构件、一致的项目结构、一致的构件模型和插件机制)、Maven的安装和配置、IDEA集成Maven环境,以及Maven项目创建、仓库概念、多模块项目构建、打包操作和依赖概念的详细介绍。
|
4月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
7月前
|
XML Java 大数据
答应粉丝的Maven仓库学习笔记,今天它来了 一起来学习快速入门Maven
答应粉丝的Maven仓库学习笔记,今天它来了 一起来学习快速入门Maven
128 1
|
Java 测试技术 调度
[Java]Maven学习笔记(尚硅谷2022)(四)
[Java]Maven学习笔记(尚硅谷2022)(四)
|
XML Java 应用服务中间件
[Java]Maven学习笔记(尚硅谷2022)(三)
[Java]Maven学习笔记(尚硅谷2022)(三)
|
JavaScript Java Maven
[Java]Maven学习笔记(尚硅谷2022)(二)
[Java]Maven学习笔记(尚硅谷2022)(二)
|
存储 IDE Java
[Java]Maven学习笔记(尚硅谷2022)(一)
[Java]Maven学习笔记(尚硅谷2022)(一)