侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

5分钟 maven3 快速入门指南

2022-07-01 星期五 / 0 评论 / 0 点赞 / 61 阅读 / 18859 字

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Maven

  • 前提条件

    你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。

  • 安装Maven

    Maven是基于java的工具,所以你的电脑上必须安装了java环境。

    首先,下载Maven和按照安装说明进行操作。然后,在终端或在命令行中键入以下命令:

mvn --version

   终端或命令行中应该打印出本机所安装的Maven的版本,如下:

Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800)Maven home: /usr/local/apache-maven-3.1.1Java version: 1.6.0_65, vendor: Apple Inc.Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomeDefault locale: zh_CN, platform encoding: EUC_CNOS name: "mac os x", version: "10.9.1", arch: "x86_64", family: "mac"

  如果是Windows环境,格式应该类似这样:

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)Maven home: D:/apache-maven-3.0.5/bin/..Java version: 1.6.0_25, vendor: Sun Microsystems Inc.Java home: C:/Program Files/Java/jdk1.6.0_25/jreDefault locale: nl_NL, platform encoding: Cp1252OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

  根据你的网络设置,您可能需要一些额外的设置。如果需要设置,请参考Maven配置向导。

  如果使用的是Windows环境 ,你应该看看Windows安装前提条件,来确保能够在Windows上使用Maven

  • 创建Maven项目

    首先,创建存放项目的目录(例如d:/maven_proj或者/Users/xxx/maven_proj),打开终端或者命令行,切换到该目录下,执行以下Maven命令:

mvn archetype:generate -DgroupId=com.oschina.test -DartifactId=my-maven-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    如果是刚安装了Maven的,第一次运行可能需要一段时间。这是因为Maven正在从网上下载大部分最近的artifacts (plugin jars and other files)到你的本地仓库。可能需要执行几次该命令才能成功。这是因为在下载完成之前,远程服务器的连接可能超时。

    输出的命令行可能类似:

[WARNING] [WARNING] Some problems were encountered while building the effective settings[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>/n  -->/n  <activeProfile>... @278:18)  @ /usr/local/apache-maven-3.1.1/conf/settings.xml, line 278, column 18[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>/n  -->/n  <activeProfile>... @278:18)  @ /Users/flanliulf/.m2/settings.xml, line 278, column 18[WARNING] [INFO] Scanning for projects...Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xmlDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml (701 B at 0.3 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.2/maven-archetype-plugin-2.2.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.2/maven-archetype-plugin-2.2.pom (8 KB at 3.4 KB/sec)....(此处省略)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.pom (703 B at 1.1 KB/sec)[INFO] ----------------------------------------------------------------------------[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0[INFO] ----------------------------------------------------------------------------[INFO] Parameter: groupId, Value: com.oschina.test[INFO] Parameter: packageName, Value: com.oschina.test[INFO] Parameter: package, Value: com.oschina.test[INFO] Parameter: artifactId, Value: my-maven-test[INFO] Parameter: basedir, Value: /Users/flanliulf/maven-proj[INFO] Parameter: version, Value: 1.0-SNAPSHOT[INFO] project created from Old (1.x) Archetype in dir: /Users/flanliulf/maven-proj/my-maven-test[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2:51.915s[INFO] Finished at: Thu Jan 23 14:59:17 CST 2014[INFO] Final Memory: 9M/81M[INFO] ------------------------------------------------------------------------

    当输出了“BUILD SUCCESS”时表示项目创建成功了,你会发现,生成的目标创建一个目录,并给出了artifactId的相同的名称。进入这个目录。

cd my-maven-test

    该项目的目录结构如下:

my-maven-test|-- pom.xml`-- src    |-- main    |   `-- java    |       `-- com    |           `-- oschina    |               `-- test    |                   `-- App.java    `-- test        `-- java            `-- com                `-- oschina                    `-- test                        `-- AppTest.java

    src/main/java目录中包含了项目的源代码,src/test/java目录中包含了项目的测试代码,pom.xml文件是该项目的项目对象模型(Project Object Model),通常称为POM文件。

    POM

    pom.xml文件是一个Maven项目的核心配置文件。它是包含了大部分你期望如何build一个项目所需信息的一个配置文件。POM比较庞大而且比较复杂,但是即使没有完全理解,我们也能够有效地使用它。该项目的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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.oschina.test</groupId>  <artifactId>my-maven-test</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>my-maven-test</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies></project>

    What did I just do?

    你执行了Maven的目标(goal) archetype:generate,并添加了一系列的参数。前缀archetype是包含了目标的插件。如果你熟悉Ant ,你可以设想这类似于Ant中的任务(task)。这个目标创建了一个基于原型(archetype)的简单项目。我只想说,一个插件是一系列拥有共同目的(general common purpose)的目标的集合。例如,jboss-maven-plugin插件,其目的是“处理各种JBoss项目deal with various jboss items” 。

    Build the Project   
mvn package

    命令行中将打印编译时的各种信息,输出了“BUILD SUCCESS”时表示项目编译成功了。

[WARNING] [WARNING] Some problems were encountered while building the effective settings[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>/n  -->/n  <activeProfile>... @278:18)  @ /usr/local/apache-maven-3.1.1/conf/settings.xml, line 278, column 18[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>/n  -->/n  <activeProfile>... @278:18)  @ /Users/flanliulf/.m2/settings.xml, line 278, column 18[WARNING] [INFO] Scanning for projects...[INFO]                                                                         [INFO] ------------------------------------------------------------------------[INFO] Building my-maven-test 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom (8 KB at 1.0 KB/sec)。。。(省略)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 KB at 13.9 KB/sec)------------------------------------------------------- T E S T S-------------------------------------------------------Running com.oschina.test.AppTestTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 secResults :Tests run: 1, Failures: 0, Errors: 0, Skipped: 0[INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-maven-test ---Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom (5 KB at 3.5 KB/sec)。。。(省略)Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar (181 KB at 32.7 KB/sec)[INFO] Building jar: /Users/flanliulf/maven-proj/my-maven-test/target/my-maven-test-1.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1:42.914s[INFO] Finished at: Thu Jan 23 15:41:20 CST 2014[INFO] Final Memory: 11M/81M[INFO] ------------------------------------------------------------------------

    不同于执行的第一个命令(archetype:generate),你可能会注意到第二个是简单的一个字 - package。这不是一个目标(goal),这是一个阶段(phase)。 一个阶段是一个构建的生命周期(build lifecycle)中的一步,一个构建的生命周期,可以看做是一系列阶段的有序集合。当指定了一个阶段时, Maven将顺序执行每个阶段。例如,如果我们执行编译(compile)阶段,实际被执行的各个阶段如下:

1.validate2.generate-sources3.process-sources4.generate-resources5.process-resources6.compile

    你可以使用下面的命令来测试刚刚编辑和打包的jar:

java -cp target/my-maven-test-1.0-SNAPSHOT.jar com.oschina.test.App

    将会得到如下输出:

Hello World!

  • 运行Maven工具

    Maven常用阶段(phase)

    虽然几乎没有一个完整的清单,但是下面列出了一些经常执行的默认生命周期(default)中的阶段。

  • validate: 验证项目是否正确,所有必须的信息是否可用。

  • compile: 编译项目的主源码,一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

  • test: 使用单元测试框架对编译后的源码进行测试 , 测试代码不会被打包或部署。

  • package: 接受编译好的代码,打包成可发布的格式,如JAR。

  • integration-test: process and deploy the package if necessary into an environment where integration tests can be run

  • verify: run any checks to verify the package is valid and meets quality criteria

  • install: 将包安装到Maven本地仓库,供本地其他Maven项目使用。

  • deploy: 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

    还有值得注意的另外两个Maven的生命周期超出了上面的默认列表 ,它们是:

  • clean: 清理上一次构建生成的文件

  • site: 生成项目站点文档

    阶段实际上被映射到底层的目标。每个阶段执行的具体目标依赖于项目的包装类型。例如,如果项目类型是一个JAR的话,package 执行 jar:jar ,而如果项目类型是 WAR 的话,执行的是 war:war

    注意的是,阶段(phase)和目标(goal)可以顺序执行。

mvn clean dependency:copy-dependencies package

    此命令将清理项目(clean the project),拷贝依赖(copy dependencies)和打包项目(package the project,即执行所有阶段来打包) 。

    生成Site
mvn site

    此阶段根据项目的POM文件生成了一个site。你可以发现在target/site目录下生成了文档。

  • 结论

   这是一个非常简单的快速入门指南。如果想进一步深入理解相关内容,请参考 Maven Getting Started Guide


广告 广告

评论区