通过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
分享到:
相关推荐
在创建项目时,我们需要指定groupId和ArtifactId,并选择Standard Maven JEE project结构。 在项目创建完成后,我们可以看到项目目录结构如下所示: * src/main/java:存放java源代码的文件夹 * src/main/...
IDEA 使用 Maven 创建 Web 项目详细教程 本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 ...通过本教程,您可以了解如何使用 IDEA 创建一个 Maven Web 项目,如何配置 Maven 环境,如何管理依赖关系等。
通过以上步骤,我们成功地使用IntelliJ IDEA 14.1.4和Maven创建了一个基本的Java Web项目。这个过程不仅让我们了解了IDEA和Maven的基本用法,也为今后的开发打下了坚实的基础。在实际开发过程中,还可以根据具体需求...
【使用 Maven 创建项目】 创建 Maven 项目通常有以下几种方式: 1. 手动创建:在项目根目录下创建一个基本的 POM.xml 文件,然后手动添加项目配置和依赖。 2. 使用 Maven Archetypes:Maven 提供了一组预定义的...
在创建项目后,Idea会自动生成基本的Maven目录结构,包括src/main/java(存放源代码)、src/main/resources(存放资源文件)、src/test/java(存放测试代码)等。此时,你需要在pom.xml文件中添加所需的依赖,例如...
本文将详细解析如何利用Maven创建项目,并结合给定文件中的具体内容,深入讲解相关的技术要点。 #### 一、Maven简介 Maven是一款基于项目对象模型(POM)的软件项目管理工具,它主要用于Java项目的构建和依赖管理。...
来自 在Eclipse中用Maven创建一个Web项目 的附带项目源码 jdk1.8 博客地址 https://blog.csdn.net/rebornsgundam/article/details/105862362
2. **依赖管理**:Maven通过中央仓库自动下载并管理项目所需的第三方库。 3. **生命周期**:Maven有三个主要的生命周期阶段:compile(编译)、test(测试)、package(打包),可以使用命令行工具如`mvn compile`...
通过 Maven 创建 Web 项目能够帮助开发者快速搭建开发环境,实现自动化构建、依赖管理和部署等功能。本文将详细介绍如何使用 Maven 在 Eclipse 中创建一个 Web 工程。 #### 二、准备工作 在开始之前,请确保已经...
通过以上步骤,你已经成功创建了一个包含多个模块的Maven项目。这样的项目结构有助于代码的模块化,便于团队协作,并且能够有效地管理依赖关系,提高开发效率。在实际开发过程中,你可能还需要根据项目需求对`pom....
2. **使用Maven创建JavaSE/JavaWeb项目**:通过Maven创建项目,可以利用POM文件来定义项目结构、依赖关系等,简化项目管理和构建过程。 #### 六、版本控制系统配置 1. **IDEA使用SVN管理代码**:配置SVN需要指定...
Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过配置 POM.xml 文件来管理项目的构建、报告和依赖关系。随着越来越多的开源项目采用 Maven,它已经成为 Java 开发领域不可或缺的一部分。 在...
java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一个简单的Maven项目java创建一...
本资源"mavenweb项目创建demo"旨在指导用户如何利用Maven创建一个Web应用程序,下面将详细阐述整个过程。 首先,我们需要理解Maven的项目对象模型(Project Object Model,POM)。POM是一个XML文件,包含了项目的...
标签"Maven Web"表示本文的主要内容是关于使用Maven创建Web项目的过程。 部分内容解释 一、建立Maven项目 建立Maven项目是创建基于Maven的Web项目的第一步。首先,选择建立Maven项目,选择File -> New -> Other,...
通过IDEA创建的Maven项目,可以方便地进行代码编写、编译、测试和部署,同时也支持多种框架和库的集成,为开发者提供了便利。 【标签】"java,idea"提示我们这个项目是基于Java语言,并且使用了IDEA作为开发工具。...
通过Maven创建Spring Boot项目的步骤及其相关知识点可以分为以下几个部分进行详细阐述: ### 一、Maven与Spring Boot简介 - **Maven**: Apache Maven 是一个项目管理和理解工具。基于项目对象模型(POM),Maven ...
从上面的 pom.xml 文件可以看到,Maven 项目的依赖关系是通过依赖项(dependency)来定义的。这些依赖项包括 Spring、Hibernate、MySQL 和 JUnit 等框架和工具。 在了解了 Maven 创建 Web 项目的基本步骤后,开发者...