`
g21121
  • 浏览: 694729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

构建第一个Maven应用

 
阅读更多

        Maven安装成功之后我们动手来构建一个Maven应用,并通过这个应用更进一步的了解Maven的细节。
        1.打开eclipse,在菜单栏中点击File->New->Other,然后在界面中找到"Maven project",点击下一步进入下一个页面:



 

        2.第二个界面可以选择是否创建一个示例项目,这里直接下一步:



 

        3.选择"原型",也就是选择项目的类型,我们选择"mavent-archetype-quickstart",下一步:



  

        4.进入到Maven项目创建的最后一步,也是最重要的一步,如图所示:



 

        想必此时很多不了解Maven的朋友会“无从下手”,因为我们不了解上面这些配置的含义,其实并不复杂。
        GroupID:是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构(下面我们会讲解Maven目录结构)。

        ArtifactID:就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

        GroupId中填写:com.hello.maven;

        ArtifactID中填写:helloMaven;

        在最后的package会自动根据前面填写的内容变化:com.hello.maven.helloMaven;

 

        5.点击"Finsh"后eclipse会自动创建项目,以下就是项目的目录结构:



 

 

        在这里要重点说下Maven的目录结构,在Maven官网上推荐了一套“标准”的目录结构:
        原文地址:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

        原文大致意思:Maven提倡使用一个共同的标准目录结构,使开发人员能在熟悉了一个Maven工程后,对其他的Maven工程也能清晰了解。Maven推荐大家尽可能的遵守这样的目录结构,这样可以快速掌握其他项目结构。

        以下是标准的目录结构,并且也是创建项目所产生的目录结构,如下:




 
 

        在工程根目录中是描述文件pom.xml即Maven构建文件,另外还包括提供给最终用户的文件,如,README.txt, LICENSE.txt等等。
        工程根目录还包括两个子目录:src,target。顶级目录下可能出现的其他目录仅仅是CVS或.svn和其他多模块工程的工程目录,最好不要再有其他目录。
        Target目录是所有工程编译构建的输出目录。
        Src目录包含所有工程的源码文件,配置文件,资源文件等等。它下面的子目录一般包含main(主要的工程源文件),test(测试文件),site(项目站点文件)。

 

        接下来我们就开始仔细分析下Maven工程与普通的Java工程有什么不同。
        打开根目录中的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">
  <!-- 指明POM使用的对象模型的版本,此值很少改动 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- groupId -->
  <groupId>com.hello.maven</groupId>
  <!-- artifactId -->
  <artifactId>helloMaven</artifactId>
  <!-- 项目产品版本 -->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 打包方式 -->
  <packaging>jar</packaging>
  <!-- 项目显示名称 -->
  <name>helloMaven</name>
  <!-- 项目站点 -->
  <url>http://286.iteye.com/</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>

 

        通过前面Ant的学习,pom.xml文件的内容并不难理解,只是有些语法语义上的差别。

        接下来我们在pom.xml配置文件中加入<build>来进行构建项目,代码如下:

<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">
  <!-- 指明POM使用的对象模型的版本,此值很少改动 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- groupId -->
  <groupId>com.hello.maven</groupId>
  <!-- artifactId -->
  <artifactId>helloMaven</artifactId>
  <!-- 项目产品版本 -->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 打包方式 -->
  <packaging>jar</packaging>
  <!-- 项目显示名称 -->
  <name>helloMaven</name>
  <!-- 项目站点 -->
  <url>http://286.iteye.com/</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>
  <!-- 这里采用默认编译器 -->
  <build>
  	<defaultGoal>compile</defaultGoal>
  </build>
</project>

 

        进入项目根目录,即pom.xml所在目录,在控制台状态下运行Maven"clean"命令:
mvn clean

运行结果:
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building helloMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ helloMaven ---
[INFO] Deleting D:\maven_project\helloMaven\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.686s
[INFO] Finished at: Mon Jul 29 11:59:12 CST 2013
[INFO] Final Memory: 3M/122M
[INFO] ------------------------------------------------------------------------
 
        我们继续尝试Maven的"test"命令,结果如下:
mvn test

运行结果:
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building helloMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ helloMaven ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\maven_project\helloMaven\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ helloMaven ---
[INFO] Compiling 1 source file to D:\maven_project\helloMaven\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ helloMaven ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\maven_project\helloMaven\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ helloMaven ---
[INFO] Compiling 1 source file to D:\maven_project\helloMaven\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ helloMaven ---
[INFO] Surefire report directory: D:\maven_project\helloMaven\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.hello.maven.helloMaven.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.712s
[INFO] Finished at: Mon Jul 29 12:35:06 CST 2013
[INFO] Final Memory: 10M/122M
[INFO] ------------------------------------------------------------------------
 
        Maven的build命令:
mvn build

运行结果:
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building helloMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ helloMaven ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\maven_project\helloMaven\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ helloMaven ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.679s
[INFO] Finished at: Mon Jul 29 13:29:27 CST 2013
[INFO] Final Memory: 3M/122M
[INFO] ------------------------------------------------------------------------
 
        Maven的install命令:
mvn install

运行结果:
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building helloMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ helloMaven ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\maven_project\helloMaven\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ helloMaven ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ helloMaven ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\maven_project\helloMaven\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ helloMaven ---
[INFO] Compiling 1 source file to D:\maven_project\helloMaven\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ helloMaven ---
[INFO] Surefire report directory: D:\maven_project\helloMaven\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.hello.maven.helloMaven.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ helloMaven ---
[INFO] Building jar: D:\maven_project\helloMaven\target\helloMaven-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ helloMaven ---
[INFO] Installing D:\maven_project\helloMaven\target\helloMaven-0.0.1-SNAPSHOT.jar to C:\Users\maoshou\.m2\repository\com\hello\maven\helloMaven\0.0.1-SNAPSHOT\helloMaven-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\maven_project\helloMaven\pom.xml to C:\Users\maoshou\.m2\repository\com\hello\maven\helloMaven\0.0.1-SNAPSHOT\helloMaven-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.289s
[INFO] Finished at: Mon Jul 29 13:32:56 CST 2013
[INFO] Final Memory: 8M/122M
[INFO] ------------------------------------------------------------------------
 
        运行完mvn install命令之后,target目录下已经多了很多文件及jar包,说明我们的maven项目已经构建完成,下一篇我们会研究maven的相关配置信息及含义。
  • 大小: 22.6 KB
  • 大小: 17.5 KB
  • 大小: 28.8 KB
  • 大小: 19.6 KB
  • 大小: 11.4 KB
  • 大小: 16.1 KB
2
1
分享到:
评论

相关推荐

    使用Eclipse构建Maven项目

    创建Maven项目的第一步是选择File &gt; New &gt; Maven Project。在新建向导中,我们可以选择“Create a simple project”来快速创建一个基本的Maven结构,或者选择“Create a project from archetype”来根据特定的Maven ...

    Maven3应用入门session

    Maven3是Maven系列的第三个主要版本,它在Maven2的基础上进行了改进,提供了更高效、更稳定、更易用的功能,帮助开发者更加便捷地管理项目的构建、依赖和生命周期。 ### Maven的核心概念 1. **项目对象模型...

    Spring in Action 使用Maven 构建Spring 工程

    Maven是一个流行的项目管理和综合工具,它通过提供一套标准化的构建过程,简化了Java项目的构建、依赖管理和部署。在Spring开发中,Maven扮演着至关重要的角色,它帮助开发者管理各种库依赖,使得Spring应用程序的...

    maven练习java项目

    【标题】"maven练习java项目"涉及到的是一个基于Maven构建的Java应用程序,它集成了MyBatis框架,旨在帮助新手学习和实践。Maven是Apache开发的一个项目管理和综合工具,它通过XML文件(pom.xml)管理项目的构建、...

    maven教程-maven教程-maven教程

    依赖管理方面,Maven采用坐标系统来唯一标识一个项目依赖,开发者只需要指定依赖的groupId、artifactId和version,Maven便能自动解析并下载依赖。多模块项目是指一个项目被分为多个子模块,可以分别进行构建,而继承...

    nexus构建maven仓库总结(完善版3),添加了对第三方插件的处理和应用

    1. **添加代理仓库**: 对于不在Maven中央仓库的第三方插件,可以在Nexus中创建一个新的代理仓库,指向提供该插件的远程仓库。 2. **手动上传**: 如果第三方插件无法通过代理获取,可以手动将jar包上传至Nexus的宿主...

    黑马maven笔记,第一天

    Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理,极大地简化了Java项目的构建流程。 ##### ...

    maven构建的Tomcat源码

    1. **Maven构建系统**:Maven通过一个项目对象模型(Project Object Model,POM)来管理项目配置。POM包含项目的属性、构建指令、依赖关系等信息。在Tomcat7.0.78的源码中,Maven会解析POM.xml文件,下载所有必要的...

    北京动力节点-郭鑫-Maven管理多模块应用.pdf

    Maven构建生命周期定义了一系列的构建阶段和目标,如编译、测试、打包、安装和部署等,开发者可以通过执行不同的生命周期阶段来完成项目的构建。此外,Maven还提供了丰富的插件支持,如编译插件、测试插件、打包插件...

    使用Eclipse构建Maven的SpringMVC项目

    创建SpringMVC项目的第一步是安装和配置Eclipse与Maven。确保你已经在Eclipse中安装了M2E插件,该插件使Eclipse能够与Maven集成。如果尚未安装,可以通过Eclipse Marketplace进行搜索并安装。 接下来,我们开始创建...

    第一个eclipse maven web项目实例

    "第一个eclipse maven web项目实例" 这个标题明确指出这是一个基于Eclipse集成开发环境的Maven Web项目示例。它表明我们正在处理一个使用Maven构建工具,且能直接在Eclipse中运行的Web应用程序项目。 描述中提到,...

    jenkins+svn+maven构建

    第一种方法使用Jenkins的SSH插件连接远程主机,实现代码发布和回滚。第二种方法使用Jenkins的SVN插件连接SVN版本控制系统,实现代码回滚。 Jenkins持续集成意义 Jenkins的持续集成意义在于它可以自动化构建、测试...

    maven-3.2.5工具下载

    它会根据`pom.xml`中的依赖声明,自动下载所有依赖及其子依赖,并且遵循第一出现优先原则处理版本冲突。 5. **聚合项目**:Maven支持多模块项目,一个父`pom.xml`可以管理多个子模块,方便大型项目的构建和管理。 ...

    Maven构建多模块项目

    创建多模块项目的第一步是建立父pom.xml文件。在`demo-parent`目录下,你会看到一个pom.xml,这里定义了项目的基本信息,比如groupId、artifactId(在这个例子中可能是`com.example.demo`和`demo-parent`),以及...

    maven安装包_3.6.3_下载.zip

    创建第一个Maven项目,你可以使用`mvn archetype:create`命令。例如,创建一个简单的Java应用,输入: ``` mvn archetype:generate -DgroupId=...

    maven2详细教程

    然后,通过创建和配置POM文件,可以开始构建第一个Maven项目。在Eclipse等IDE中,可以安装Maven插件,以便更方便地在开发环境中集成和使用Maven。 ### 多项目参与 Maven 2还支持多模块项目,允许开发者在一个父POM...

    apache-maven-3.6.3.zip

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过定义项目的构建过程、依赖管理和项目信息来简化和标准化整个开发流程。Maven 3.6.3是Maven的一个稳定版本,包含了多项改进和修复...

    使用Maven构建JavaWeb项目实例

    使用Maven构建JavaWeb项目的第一步是创建一个新的Maven项目。这可以通过执行`mvn archetype:create`命令,选择一个适合的archetype,例如`maven-archetype-webapp`,来生成基础的项目结构。 三、Maven的POM.xml POM...

    官方下载maven-3.5.4

    Maven 是一个基于项目对象模型(Project Object Model,POM)的概念,用于管理和构建 Java 项目的工具。它由 Apache 软件基金会开发,旨在简化项目构建过程,通过自动化构建流程,使开发者可以专注于编写代码而不是...

Global site tag (gtag.js) - Google Analytics