Maven 入门 (2)—— 创建Maven项目
http://blog.csdn.net/kakashi8841/article/details/17427043
读这篇文章之前请先确保你成功安装了maven,如果你还没安装成功,请先看:Maven 入门 (1)—— 安装 这里的文章安装成功再继续。
因为maven在执行一些插件目标的时候可能会从中心数据库下载依赖的文件,因此,使用maven的时候请保持联网状态。
现在如果你已经迫不及待了,那么可以尝试在命令行终端先输入:
- mvn clean install
这时候会打印正在下载各种文件。是不是感觉很爽呢?好了,下面我们开始进入正题:
1、先创建一个Maven项目。
在终端输入命令然后执行:
- mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
和之前一样,现在它也是在不停下载各种所需要的文件。
等到命令结束后,你发现当前目录下多了一个叫my-app的目录,它里面有pom.xml和src目录,如下图:
完整目录结构如下:
是不是很神奇嘞?
神奇归神奇,刚刚那个命令那么复杂,它到底是什么意思,做了什么操作?别急,我们慢慢看。
首先,你刚刚执行了一个maven的目标"archetype:generate",并传了不同的参数给那个目标。"archetype"是一个插件,它包含了"generate"这个目标。如果你熟悉Ant,你可以假设它就是ant中的task。这个目标创建基于原型之上的简单工程。总之就是,插件是一系列通用目标的集合。例如jboss-maven-plugin,就是用于处理各种不同的jboss项目。
接着,我们来看看 -DgroupId -DartifactId -DarchetypeArtifactId -DinteractiveMode 这几个属性
其实它们是Java执行时的参数。
groupId:一般填的是项目名,有的人喜欢填公司名。这里说下,一个公司一般是有多个项目的,如果这里填公司名,那么artifactId只能填项目名了。而version毫无疑问是版本号。这样在项目的划分上粒度比较粗。因此,我一般groupId是填到项目。比如:com.taobao.shop。
artifactId:上面填了项目,那么这里就可以填模块了。比如:login
version:这里填的是本模块版本。
OK上面的groupId、artifactId、version(简称GAV)构成了maven中的“定位系统“,理论上所有的依赖包都可以通过GAV找到。
我们接着看其它参数,
archetypeArtifactId:这个参数其实是指定一个模版来初始化生成你的项目。比如你是一个普通的java应用程序,还是一个web程序,都有对应的模版。
如果你还是不懂怎么生成一个maven项目,那么,你也可以通过命令行:
mvn help:describe -Dplugin=archetype
一样的,这里help也是一个插件,然后describe是目标,而-Dplugin参数指明了describe要查看的是archetype插件的信息。
这样就能获得archetype这个插件的帮助。
Name: Maven Archetype Plugin
Description: Maven Archetype is a set of tools to deal with archetypes, i.e.
an abstract representation of a kind of project that can be instantiated into
a concrete customized Maven project. An archetype knows which files will be
part of the instantiated project and which properties to fill to properly
customize the project.
Group Id: org.apache.maven.plugins
Artifact Id: maven-archetype-plugin
Version: 2.2
Goal Prefix: archetype
This plugin has 8 goals:
archetype:crawl
Description: Crawl a Maven repository (filesystem, not HTTP) and creates a
catalog file.
archetype:create
Description: The archetype creation goal looks for an archetype with a
given groupId, artifactId, and version and retrieves it from the remote
repository. Once the archetype is retrieved, it is then processed against a
set of user parameters to create a working Maven project.
Deprecated. Please use the generate mojo instead.
archetype:create-from-project
Description: Creates an archetype project from the current project.
This goal reads your source and resource files, the values of its
parameters, and properties you specify in a .property file, and uses them
to create a Maven archetype project using the maven-archetype packaging. If
you build the resulting project, it will create the archetype. You can then
use this archetype to create new projects that resemble the original.
The maven-archetype-plugin uses Velocity to expand template files, and this
documentation talks about 'Velocity Properties', which are values
substituted into Velocity templates. See The Velocity User's Guide for more
information.
This goal modifies the text of the files of the current project to form the
Velocity template files that make up the archetype.
GAV
The GAV values for the current project are replaced by properties:
groupId, artifactId, and version. The user chooses new values for these
when generating a project from the archetype.
package
All the files under one specified Java (or cognate) package are relocated
to a project that the user chooses when generating a project. References
to the class name are replaced by a property reference. For example, if
the current project's sources are in the package
org.apache.saltedpeanuts, then any example of the string
org.apache.saltedpeanuts is replaced with the Velocity property reference
${packageName}. When the user generates a project, this is in turn
replaced by his or her choice of a package.
custom properties
You may identify additional strings that should be replaced by
parameters. To add custom properties, you must use the propertyFile
parameter to specify a property file. See the documentation for
propertyFile for the details.
Note that you may need to edit the results of this goal. This goal has no
way to exclude unwanted files, or add copyright notices to the Velocity
templates, or add more complex elements to the archetype metadata file.
This goal also generates a simple integration-test that exercises the
generated archetype.
archetype:generate
Description: Generates a new project from an archetype, or updated the
actual project if using a partial archetype. If the project is fully
generated, it is generated in a directory corresponding to its artifactId.
If the project is updated with a partial archetype, it is done in the
current directory.
archetype:help
Description: Display help information on maven-archetype-plugin.
Call
mvn archetype:help -Ddetail=true -Dgoal=<goal-name>
to display parameter details.
archetype:integration-test
Description: Execute the archetype integration tests, consisting in
generating projects from the current archetype and optionally comparing
generated projects with reference copy.
Each IT consists of a sub-directory in src/test/resources/projects
containing:
- a goal.txt file, containing a list of goals to run against the generated
project (can be empty, content ignored before maven-archetype-plugin
2.1),
- an archetype.properties file, containing properties for project
generation,
- an optional reference/ directory containing a reference copy of the
expected project created from the IT.
Notice that it is expected to be run as part as of a build after the
package phase and not directly as a goal from CLI.
archetype:jar
Description: Build a JAR from the current Archetype project.
archetype:update-local-catalog
Description: Updates the local catalog
For more information, run 'mvn help:describe [...] -Ddetail'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.851s
[INFO] Finished at: Tue Dec 24 02:45:02 CST 2013
[INFO] Final Memory: 11M/156M
[INFO] ------------------------------------------------------------------------
我们注意到:archetype这个插件本身也有个help目标,似乎能查找更多帮助信息。
那么我们可以尝试用下面命令来查找generate目标的信息:
mvn archetype:help -Ddetail=true -Dgoal=generate
然后,这时候返回的内容是:
cmatoMacBook-Pro:~ cjunhong$ mvn archetype:help -Ddetail=true -Dgoal=generate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-archetype-plugin:2.2:help (default-cli) @ standalone-pom ---
[INFO] org.apache.maven.plugins:maven-archetype-plugin:2.2
Maven Archetype Plugin
Maven Archetype is a set of tools to deal with archetypes, i.e. an abstract
representation of a kind of project that can be instantiated into a concrete
customized Maven project. An archetype knows which files will be part of the
instantiated project and which properties to fill to properly customize the
project.
archetype:generate
Generates a new project from an archetype, or updated the actual project if
using a partial archetype. If the project is fully generated, it is generated
in a directory corresponding to its artifactId. If the project is updated with
a partial archetype, it is done in the current directory.
Available parameters:
archetypeArtifactId
The archetype's artifactId.
Expression: ${archetypeArtifactId}
archetypeCatalog (Default: remote,local)
The archetype catalogs to use to build a list and let the user choose
from. It is a comma separated list of catalogs. Catalogs use following
schemes:
- 'file://...' with archetype-catalog.xml automatically appended when
pointing to a directory
- 'http://...' or 'https://...' with archetype-catalog.xml always appended
- 'local' which is the shortcut for 'file://~/.m2/archetype-catalog.xml'
- 'remote' which is the shortcut for Maven Central repository, ie
'http://repo1.maven.org/maven2'
- 'internal' which is an internal catalog
Since 2.0-alpha-5, default value is no longer internal,local but
remote,local. If Maven Central repository catalog file is empty, internal
catalog is used instead.
Expression: ${archetypeCatalog}
archetypeGroupId
The archetype's groupId.
Expression: ${archetypeGroupId}
archetypeRepository
The archetype's repository.
Expression: ${archetypeRepository}
archetypeVersion
The archetype's version.
Expression: ${archetypeVersion}
basedir
(no description available)
Expression: ${basedir}
filter
Applying some filter on displayed archetypes list: format is artifactId or
groupId:artifactId.
- org.apache: -> displays all archetypes which contain org.apache in
groupId
- :jee or jee -> displays all archetypes which contain jee in artifactId
- org.apache:jee -> displays all archetypes which contain org.apache in
groupId AND jee in artifactId
Expression: ${filter}
goals
Additional goals to immediately run on the project created from the
archetype.
Expression: ${goals}
interactiveMode (Default: ${settings.interactiveMode})
User settings use to check the interactiveMode.
Required: Yes
Expression: ${interactiveMode}
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.088s
[INFO] Finished at: Tue Dec 24 02:56:42 CST 2013
[INFO] Final Memory: 9M/156M
[INFO] ------------------------------------------------------------------------
看到没有,连我们刚刚没有解释的interactiveMode参数,它里面也都有了说明了。
所以,要善于利用help插件来查找某个插件的信息,然后如果得知这个插件有help目标查找更详细信息,那么就更好了!
Maven 入门 (2)—— 创建Maven项目的更多相关文章
- Maven入门----MyEclipse创建maven项目(二)
新建项目: Next next next 新建项目后,MyEclipse会自动从远程仓库中下载支持包,需要几分钟左右时间. 项目结构图: HelloWorld.java public class He ...
- Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目
1.根据 Maven 的约定,我们在D盘根目录手动创建如下目录及文件结构: 2.打开pom.xml文件,添加如下内容: <project xmlns="http://maven.apa ...
- java web开发入门九(Maven使用&idea创建maven项目)基于intellig idea
Maven 1.解决的问题 jar包的依赖和管理:版本.依赖关系等 自动构建项目 2.maven介绍 1.Maven是什么? Apache Maven是一个软件项目管理的综合工具.基于项目对象模型(P ...
- Maven命令行创建web项目,并部署到jobss当中(解决No plugin found for prefix 'jboss-as' in the current project and in the plugin groups [org.apache.maven.plugins,问题)
首件创建项目:此处可参照:http://maven.apache.org/guides/mini/guide-webapp.html mvn archetype:generate -DgroupId= ...
- eclipse中maven工程的创建javaweb项目
第一步.new一个新的工程 ,选中maven project,点击next 第2步.不做选择,点击next 第3步.选择maven-archetype-webapp,点击next 第四步.填写项目名称 ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置
1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、yml属性配置、多环境配置、自定义properties配置
1 IntelliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到 ...
- maven命令行创建web项目报错:java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
早上一上班就想新建一个web项目玩玩,没想到一敲命令创建就失败了,真是出师不利.各种折腾无果,当然我也可以用eclipse直接创建的,就是不甘心被这破问题给耍了.刚刚才发现问题原因,这个结果我也是醉了 ...
- Maven 用Eclipse创建web项目后报错的解决方式
1.maven中创建web项目后jsp可能会报错,因为其没有相关的依赖(包),和自带的动态网页项目创建不一样.所以在配置文件中要添加相关的依赖,比如servlet的 2.项目右键-maven-upda ...
- 1.搭建maven,eclipse创建maven项目
1.下载maven包,下载地址为:http://maven.apache.org/download.cgi 2.解压zip包 3.eclipse 引入maven: window-Preferences ...
随机推荐
- python-异常处理
一.异常 异常是什么? 就是影响程序正常执行的事件,异常在程序执行的过程中发生,脚本发生异常时,我们需要捕获它,否则程序就会终止. 异常处理: 1.捕获异常:try:...except ..... w ...
- Showbo.Msg.alert
注意alert,confirm及prompt并不同于系统的,这个是用层模仿的,并不能挂起程序的执行 所以如果需要在确认后执行相关的操作,需要在配置文件中传递回调函数fn 按钮只提供yes和no两个 S ...
- OpenGL在Ubuntu 14.04 中的设置与编程
在sudo apt-get install XXX,别的教程讲的很详细了. 编写好程序需要在shell中链接 g++ teapot.c -o teapot -lglut -lGL -lGLU 此处要注 ...
- 让JavaScript回归函数式编程的本质
JavaScript是一门被误会最深的语言,这话一点不假,我们看下它的发展历史. 1995年,Netscape要推向市场,需要一门脚本语言来配套它.是使用一门已有的语言,还是发明一门新的语言,这也不是 ...
- Ubuntu 16.04安装QQ国际版图文详细教程
因工作需要,我安装了Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全 ...
- 软件工程(FZU2015)赛季得分榜,第四回合
目录 第一回合 第二回合 第三回合 第四回合 第五回合 第6回合 第7回合 第8回合 第9回合 第10回合 第11回合 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分 ...
- 动态获取div的高度 随着窗口变化而变化
// 1.jq法 <script> var winHeight = $(window).height(); $("#show").css("height&qu ...
- MySQL架构优化实战系列1:数据类型与索引调优全解析
一.数据类型优化 数据类型 整数 数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 ...
- 更新/替换系统 hosts,轻松访问国外站点
更新 hosts 下面介绍的操作均可能覆盖现有 hosts ,进行操作前请先确认是否需要备份. 推荐使用本项目的 Host Tools 来自动化 备份/配置 工作. 若更新 hosts 未立即生效,请 ...
- 整块div设置为超链接进行界面跳转
鼠标点击当前整块DIV任意一个地方均可进行页面跳转,如果复制过去的代码不能用,请注意双引号和单引号,是否为英文状态下的输入法填写出来的. 1.跳转至新建页面 <div class="& ...