`
yinwufeng
  • 浏览: 286930 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过Maven创建项目

阅读更多

通过Maven创建项目

前面我们讲到为什么使用Maven, Maven的安装, 与IDE的集成, 建立Nexus本地仓库, 这些都是在我们在正式创建项目的前的准备工作. 从这一章开始我们介绍利用Maven来创建, 管理我们的项目.

 

这里假设你已经阅读了我前面的几篇文章, 或者你已经安装了Maven, 配置好了IDE集成环境. 项目的创建大致分为两种, 一种是通过Maven的命令行来操作, 另一种是通过IDE界面环境来创建, 下面我们分别来介绍:

通过Maven命令行来创建项目
Maven项目的创建是通过插件archetype(原型)来创建的, 也有人翻译成骨架, 你可以理解为Template. 通过archetype可以选择创建最基本的项目模型, 也可以通过预置模板来创建项目, archetype预置了很多项目模板, 比如Spring项目模板, EJB项目模板等. 下面我们分别来介绍:

1.创建基本项目
假如我们要生成一个名称为ftpserver项目,在命令行提示符下执行以下命令:

mvn archetype:create       -DarchetypeGroupId=org.apache.maven.archetypes  -DgroupId=com.alibaba.base
-DartifactId=ftpserver

第一个参数-DarchetypeGroupId 是制定archetype插件的所属的groupId

第二个参数-DgroupId是制定你将要创建的项目的groupId, 根据自己项目情况做相应的修改

第三个参数-DartifactId是制定你要创建的构件ID, 这个例子是 ftpserver

 

执行后类似的显示如下:

 

 

下面我们看一下生成的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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.alibaba.base</groupId>

  <artifactId>ftpserver</artifactId>

  <packaging>jar</packaging>

  <version>1.0-SNAPSHOT</version>

  <name>ftpserver</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>

 

这里介绍下一些主要标签的作用:

•modelVersion 制定POM文件所使用的模板版本, 虽然POM文件版本是不经常更新的,但是强制指定版本可以保持整个项目的一致性和稳定性.
•groupId 这个标签用来指定这个项目所属的公司或者组织, 在这个例子里, groupId为com.alibaba.base, 表示这个构件是属于alibaba基础模块的. 这个属性通常与artifaceId一起共同标识一个构件
•artifactId 指定这个构件的名称, 这个例子里面是ftpserver, 在生成的最终文件中,这里的artifactId将作为文件名的一部分出现, 标准的文件命名格式为<artifactId>-<version>.<extension>,  这个例子就是ftpserver-1.0.jar
•packaging 用来指定打包类型,比如JAR, WAR, EAR等, 如果不指定那么默认是JAR, 这里的不仅仅可以指定打包类型,也可以指定为一个特定的生命周期作为整个build过程的一部分, 关于这一部分我们将来再详细讨论.
•version 制定项目版本, 这里版本多了一个SNAPSHOT的概念, 作用域开发过程, 在后面会详细介绍如何使用SNAPSHOT来进行协作开发.
•name 制定项目名称, Maven在根据项目生成文档的时候会用到这个标签属性
•url 指定这个项目的站点地址, Maven在根据项目生成文档的时候会用到这个标签属性
•description 项目的描述信息, Maven在根据项目生成文档的时候会用到这个标签属性
 

下面我们看一下生成的项目目录树:

ftpserver

|-- pom.xml

`-- src

    |-- main

    |   `-- java

    |       `-- com

    |           `-- alibaba

    |               `-- ftpserver

    |                   `-- App.java

    `-- test

        `-- java

            `-- com

                `-- alibaba

                    `-- ftpserver

                        `-- AppTest.java

 

 

1.创建模板项目
上面我们创建了一个基本项目, 现在我们介绍一下如何创建一个模板项目, 比如我们要创建一个spring的项目, 仅仅上面的步骤是不够的, 那么Maven有这样的模板替你做了很多项目配置的事情, 下面就让我们看看如何操作, 很简单只要把create换成generate就可以了, 还是创建一个名为ftpserver的spring项目:

mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes  -DgroupId=com.alibaba.base
-DartifactId=ftpserver

在命令行下回车以后我们可以看到以下提示:

     ……

Choose archetype:

1: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web applicati

on with Hibernate, Spring and JSF)

2: internal -> appfuse-basic-spring (AppFuse archetype for creating a web applic

ation with Hibernate, Spring and Spring MVC)

3: internal -> appfuse-basic-struts (AppFuse archetype for creating a web applic

ation with Hibernate, Spring and Struts 2)

4: internal -> appfuse-basic-tapestry (AppFuse archetype for creating a web appl

ication with Hibernate, Spring and Tapestry 4)

5: internal -> appfuse-core (AppFuse archetype for creating a jar application wi

th Hibernate and Spring and XFire)

6: internal -> appfuse-modular-jsf (AppFuse archetype for creating a modular app

lication with Hibernate, Spring and JSF)

7: internal -> appfuse-modular-spring (AppFuse archetype for creating a modular

application with Hibernate, Spring and Spring MVC)

8: internal -> appfuse-modular-struts (AppFuse archetype for creating a modular

application with Hibernate, Spring and Struts 2)

9: internal -> appfuse-modular-tapestry (AppFuse archetype for creating a modula

r application with Hibernate, Spring and Tapestry 4)

10: internal -> maven-archetype-j2ee-simple (A simple J2EE Java application)

11: internal -> maven-archetype-marmalade-mojo (A Maven plugin development proje

ct using marmalade)

12: internal -> maven-archetype-mojo (A Maven Java plugin development project)

13: internal -> maven-archetype-portlet (A simple portlet application)

14: internal -> maven-archetype-profiles ()

15: internal -> maven-archetype-quickstart ()

16: internal -> maven-archetype-site-simple (A simple site generation project)

17: internal -> maven-archetype-site (A more complex site project)

18: internal -> maven-archetype-webapp (A simple Java web application)

19: internal -> jini-service-archetype (Archetype for Jini service project creat

ion)

20: internal -> softeu-archetype-seam (JSF+Facelets+Seam Archetype)

21: internal -> softeu-archetype-seam-simple (JSF+Facelets+Seam (no persistence)

Archetype)

22: internal -> softeu-archetype-jsf (JSF+Facelets Archetype)

23: internal -> jpa-maven-archetype (JPA application)

24: internal -> spring-osgi-bundle-archetype (Spring-OSGi archetype)

25: internal -> confluence-plugin-archetype (Atlassian Confluence plugin archety

pe)

26: internal -> jira-plugin-archetype (Atlassian JIRA plugin archetype)

27: internal -> maven-archetype-har (Hibernate Archive)

28: internal -> maven-archetype-sar (JBoss Service Archive)

29: internal -> wicket-archetype-quickstart (A simple Apache Wicket project)

30: internal -> scala-archetype-simple (A simple scala project)

31: internal -> lift-archetype-blank (A blank/empty liftweb project)

32: internal -> lift-archetype-basic (The basic (liftweb) project)

33: internal -> cocoon-22-archetype-block-plain ([http://cocoon.apache.org/2.2/m

aven-plugins/])

34: internal -> cocoon-22-archetype-block ([http://cocoon.apache.org/2.2/maven-p

lugins/])

35: internal -> cocoon-22-archetype-webapp ([http://cocoon.apache.org/2.2/maven-

plugins/])

36: internal -> myfaces-archetype-helloworld (A simple archetype using MyFaces)

37: internal -> myfaces-archetype-helloworld-facelets (A simple archetype using

MyFaces and facelets)

38: internal -> myfaces-archetype-trinidad (A simple archetype using Myfaces and

Trinidad)

39: internal -> myfaces-archetype-jsfcomponents (A simple archetype for create c

ustom JSF components using MyFaces)

40: internal -> gmaven-archetype-basic (Groovy basic archetype)

41: internal -> gmaven-archetype-mojo (Groovy mojo archetype)

Choose a number:  (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/2

4/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41) 15: :

 

我们可以看到有很多预定义好的模板项目, 这里我们要创建一个spring的项目, 选择2然后回车, 会出现以下提示:

[INFO] artifact org.appfuse.archetypes:appfuse-basic-spring: checking for update

s from nexus

[INFO] artifact org.appfuse.archetypes:appfuse-basic-spring: checking for update

s from central

Define value for version:  1.0-SNAPSHOT: :

细心的读者可能会注意到Maven会从nexus本地仓库获取插件的更新,前提是要建立起自己的本地仓库, 之前的文章中我们已经讲过如何建立nexus本地仓库. 粗体部分是给的提示说你的项目的起始版本, 它给出一个默认值1.0-SNAPSHOT, 通常如果没有特殊需求,我们可以根据默认规则回车确认就可以了, 你也可以输入自定义的版本,但并不推荐这么做.回车后会看到以下提示:

Define value for version:  1.0-SNAPSHOT: :

Confirm properties configuration:

groupId: com.alibaba.base

artifactId: ftpserver

version: 1.0-SNAPSHOT

package: com.alibaba.base

Y: :

Maven会给出项目的相关信息让你确认, 如果没有错误,直接回车确认即可, 然后你就可以看到Maven在努力的刷屏帮你建立起一个spring项目, 在最后如果你可以看到类似的信息,那说明项目已经创建成功:

[INFO] OldArchetype created in dir: D:\work\projects\test\ftpserver

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 69 minutes 48 seconds

[INFO] Finished at: Fri Jun 26 11:45:52 CST 2009

[INFO] Final Memory: 9M/127M

[INFO] ------------------------------------------------------------------------

粗体部分提示, 项目成功构建.

然后我们来看看,这次的POM文件与上次有什么不同, Maven生成了一个700行左右的POM文件, 里面几乎包含了一个项目所应该有的一切, 构建, 自动单元测试, 构件依赖, 报表(站点), 数据库连接, SCM, 等等, 我们可以根据实际需要来选择我们所需要的项目周期管理, 由于代码太多这里就不贴出来了. 在后面的POM文件详解里面, 我会介绍一下POM文件一些常用的标签以及如何使用.

 

下面我们再看一下目录结构有什么不同:

ftpserver

|-- pom.xml

`-- src

    |-- main

    |   `-- java

    |       `-- com

    |           `-- alibaba

    |               `-- ftpserver

|                   `-- App.java

|    -- resources

|    -- webapp

|-- site

    `-- test

    |   `-- java

    |       `-- com

    |            `-- alibaba

    |                `-- ftpserver

|                    `-- AppTest.java

|    -- resources

 

我们可以看到, 多了粗体部分site是Maven为项目生成站点, 所有的报表都将生成在这个站点里面, 在resources目录里还会有很多资源文件, 比如多语言的资源文件等. 这是根据默认规则建立的项目目录结构,当然你可以自定义目录结构,但是我们推荐在将来的项目中使用maven的默认规则.

 

关于Maven的生命周期管理, 我们会在后面章节讨论.

通过IDE(IDEA)来创建项目
如果你是通过命令行方式创建的项目, 要在IDE(eclipse, 或者Intellij IDEA)上开发, 只需要通过简单的命令就可以生成eclipse或者IDEA的项目文件:

mvn idea:idea

mvn eclipse:eclipse

之后只需要运行对应的工程文件就可以在IDE里面进行后续的开发工作了.

 

如果你不喜欢使用命令行, 那么你也可以在IDE里面通过图形化的界面来创建项目,, IDEA内部集成了对Maven的支持, 如果使用eclipse的话你还需要下载m2e插件. 下面我们以IDEA为例来创建之前例子中的项目:

1.File->new project, 然后选择第一项 Create project from scratch, 点击下一步可以看到:
 左下角选择Maven Module, 填写目录相关信息, 点击下一步


1.这里有一个复选框, Create from archetype, 如果不选则是创建基本项目, 在复选框上面打勾, 然后就可以选择你想要创建项目的类型, 这里我们选择跟之前那个例子一样的类型: appfuse-basic-spring, 点击Finish就完成了项目的创建.
2.通过命令行和IDE生成的项目的POM文件和目录结构是一样的:


小结
通过这一章,我们了解到如何通过Maven根据我们的需要创建项目, 命令行方式和IDE方式, 通过命令行的方式不受操作系统的限制, 可以在没有界面的Linux等操作系统进行生命周期管理, 这在项目后期,我们需要通过命令行方式在测试服务器, 预发布服务器和生产环境服务器进行相应的生命周期管理. IDE方式适合在项目建立初期和开发过程中, 可以很方便的通过界面的方式来管理项目的生命周期. 下面的章节, 我会详细介绍POM文件以及Maven生命周期.


本文来自CSDN博客,:http://blog.csdn.net/arvinzhuo/archive/2009/06/26/4301280.aspx

分享到:
评论

相关推荐

    基于maven创建web项目

    在创建项目时,我们需要指定groupId和ArtifactId,并选择Standard Maven JEE project结构。 在项目创建完成后,我们可以看到项目目录结构如下所示: * src/main/java:存放java源代码的文件夹 * src/main/...

    idea使用maven创建web项目详细教程

    IDEA 使用 Maven 创建 Web 项目详细教程 本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 ...通过本教程,您可以了解如何使用 IDEA 创建一个 Maven Web 项目,如何配置 Maven 环境,如何管理依赖关系等。

    使用Idea14.1.4和maven创建java web项目

    通过以上步骤,我们成功地使用IntelliJ IDEA 14.1.4和Maven创建了一个基本的Java Web项目。这个过程不仅让我们了解了IDEA和Maven的基本用法,也为今后的开发打下了坚实的基础。在实际开发过程中,还可以根据具体需求...

    安装maven和使用maven创建项目

    【使用 Maven 创建项目】 创建 Maven 项目通常有以下几种方式: 1. 手动创建:在项目根目录下创建一个基本的 POM.xml 文件,然后手动添加项目配置和依赖。 2. 使用 Maven Archetypes:Maven 提供了一组预定义的...

    idea使用maven创建的web项目

    在创建项目后,Idea会自动生成基本的Maven目录结构,包括src/main/java(存放源代码)、src/main/resources(存放资源文件)、src/test/java(存放测试代码)等。此时,你需要在pom.xml文件中添加所需的依赖,例如...

    maven创建项目

    本文将详细解析如何利用Maven创建项目,并结合给定文件中的具体内容,深入讲解相关的技术要点。 #### 一、Maven简介 Maven是一款基于项目对象模型(POM)的软件项目管理工具,它主要用于Java项目的构建和依赖管理。...

    在Eclipse中用Maven创建一个Web项目

    来自 在Eclipse中用Maven创建一个Web项目 的附带项目源码 jdk1.8 博客地址 https://blog.csdn.net/rebornsgundam/article/details/105862362

    mavenWeb空项目

    2. **依赖管理**:Maven通过中央仓库自动下载并管理项目所需的第三方库。 3. **生命周期**:Maven有三个主要的生命周期阶段:compile(编译)、test(测试)、package(打包),可以使用命令行工具如`mvn compile`...

    maven创建web工程

    通过 Maven 创建 Web 项目能够帮助开发者快速搭建开发环境,实现自动化构建、依赖管理和部署等功能。本文将详细介绍如何使用 Maven 在 Eclipse 中创建一个 Web 工程。 #### 二、准备工作 在开始之前,请确保已经...

    Maven项目创建流程

    通过以上步骤,你已经成功创建了一个包含多个模块的Maven项目。这样的项目结构有助于代码的模块化,便于团队协作,并且能够有效地管理依赖关系,提高开发效率。在实际开发过程中,你可能还需要根据项目需求对`pom....

    IDEA使用基础教程(内含创建简单的JavaSE,JavaWeb,以及maven下创建JavaSE和JavaWeb等),适合第一次使用IDEA的同学

    2. **使用Maven创建JavaSE/JavaWeb项目**:通过Maven创建项目,可以利用POM文件来定义项目结构、依赖关系等,简化项目管理和构建过程。 #### 六、版本控制系统配置 1. **IDEA使用SVN管理代码**:配置SVN需要指定...

    maven创建webapp

    Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过配置 POM.xml 文件来管理项目的构建、报告和依赖关系。随着越来越多的开源项目采用 Maven,它已经成为 Java 开发领域不可或缺的一部分。 在...

    java创建一个简单的Maven项目

    java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一...

    mavenweb项目创建demo

    本资源"mavenweb项目创建demo"旨在指导用户如何利用Maven创建一个Web应用程序,下面将详细阐述整个过程。 首先,我们需要理解Maven的项目对象模型(Project Object Model,POM)。POM是一个XML文件,包含了项目的...

    Eclipse创建基于MAVEN的web项目

    标签"Maven Web"表示本文的主要内容是关于使用Maven创建Web项目的过程。 部分内容解释 一、建立Maven项目 建立Maven项目是创建基于Maven的Web项目的第一步。首先,选择建立Maven项目,选择File -&gt; New -&gt; Other,...

    用idea创建的maven web项目

    通过IDEA创建的Maven项目,可以方便地进行代码编写、编译、测试和部署,同时也支持多种框架和库的集成,为开发者提供了便利。 【标签】"java,idea"提示我们这个项目是基于Java语言,并且使用了IDEA作为开发工具。...

    通过maven创建创建SpringBoot工程

    通过Maven创建Spring Boot项目的步骤及其相关知识点可以分为以下几个部分进行详细阐述: ### 一、Maven与Spring Boot简介 - **Maven**: Apache Maven 是一个项目管理和理解工具。基于项目对象模型(POM),Maven ...

    3Maven创建web项目具体步骤.docx

    从上面的 pom.xml 文件可以看到,Maven 项目的依赖关系是通过依赖项(dependency)来定义的。这些依赖项包括 Spring、Hibernate、MySQL 和 JUnit 等框架和工具。 在了解了 Maven 创建 Web 项目的基本步骤后,开发者...

Global site tag (gtag.js) - Google Analytics