Hello World项目中有一些Maven的约定:在项目根文件夹中放置pom.xml,在src/main/java文件夹下放置项目的主代码,在sc/test/java中放置项目的測试代码。之所以一步一步的展示这些步骤,就是为了让我们这些菜鸟得到最真实的感受。

我们称这些主要的文件夹结构和pom.xml文件内容为项目的骨架。

例如以下就是我们项目的文件夹结构骨架:


可是我们不希望每次创建项目时。都是手动一个一个的创建我们的文件夹结构。反复这些没有什么意义的事情。

为此Maven提供了Archetype来帮助我们高速的勾勒出项目骨架。


我们还是以Hello World项目为例进行说明:

假设是Maven3。简单的执行:
mvn archetype:generate
假设是Maven2,最好执行例如以下命令:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
在Maven2中直接使用mvn archetype:generate命令是不安全的,由于该命令没有指定Archetype插件的版本号。于是Maven会自己主动下载最新的版本号,进而可能得到不稳定的SNAPSHOT版本号,导致执行失败。

然而在Maven3中。即使用户没有指定版本号,Maven也会仅仅解析最新的稳定版本号,因此是安全的。


首次执行时,mvn会从远程"中央仓库"下载一些必需的文件到"本地仓库"(C:\Users\当前username\.m2\repository)


下载完毕后,会自己主动进入交互模式。会让你输入一些基本信息,类似以下这样:


[INFO] Generating project in Interactive mode 
由于要联网获取项目模板,在这要等待一段时间,莫要着急。


这里会自己主动列出非常多项目模板,每种模板前面会有一个数字序号。直接回车。721,依据每一个人机器上安装的eclipse插件不同。可能默认的数字不同。




Archetype插件将依据我们提供的信息创建项目骨架。

在当前文件夹下,Archetype插件会创建一个名为mavendemo-hello-world(我们定义的artifactId)的子文件夹,从中能够看到项目的基本结构:主要的pom.xml已经被创建,里面包括了必要的信息以及一个junit依赖;主代码文件夹src/main/java已经被创建。在该文件夹下另一个Java类,注意这里使用到了刚才定义的包名。而这个类也只唯独一个简单的输出Hello World!的main方法;測试代码文件夹src/test/java也被创建好了。而且包括了一个測试用例。

package com.sjf.model;
 
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

package com.sjf.model;
 
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
 
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
 
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
 
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}

项目结构:


Archetype:generate另一种方式,一次性设置所有属性:
mvn archetype:generate -DgroupId=com.sjf.mavendemo -DartifactId=mavendemo-hello-world -Dversion=1.0.0SANPSHOT -Dpackage=com.sjf.model


来源于:《maven实战》


[Maven实战](5)Archetype生成项目骨架的更多相关文章

  1. Maven之自定义archetype生成项目骨架(一)

      Maven之自定义archetype生成项目骨架(一) 标签: mavennexus插件 2015-07-15 16:40 2443人阅读 评论(0) 收藏 举报  分类: Maven技术(9)  ...

  2. Maven之自定义archetype生成项目骨架

    Maven之自定义archetype生成项目骨架(一) http://blog.csdn.net/sxdtzhaoxinguo/article/details/46895013

  3. (转)Maven之自定义archetype生成项目骨架

    背景:最近在开发一个项目的基础构件,在以后项目的开发过程中可以直接使用该构件快速的生成项目骨架进行开发. 摘要:使用过Maven的人都知道maven中有许多功能都是通过插件来提供的,今天我们来说一下其 ...

  4. maven3实战之maven使用入门(使用archetype生成项目骨架)

    maven3实战之maven使用入门(使用archetype生成项目骨架) ---------- maven提供了archetype以帮助我们快速勾勒出项目骨架.以Hello World为例,我们使用 ...

  5. Maven实战04_使用Archetype生成项目骨架

    在上一章中的HelloWorld中,我们的项目遵循了一些Maven项目的约定 在项目的根目录中放置pom.xml 在src/main/java目录中放置项目的主代码 在src/test/java目录中 ...

  6. Maven使用archetype迅速生成项目骨架

    archetype意思是"原型",相当于项目模板.archetype是maven的一个插件,相当于模板工具包. 一个十分重要的mvn指令:mvn 插件名:目标名maven自带三个内 ...

  7. 使用Maven命令行快速创建项目骨架(archetype)

      > mvn archetype:generate 接下来就会输出一些列带索引变化的archetype项可供我们选择,然后提示我们选择一个编号,可以直接回车选择默认的编号(392),然后就跟着 ...

  8. 【Maven实战】archetype的使用和eclipse的配置

    1.之前在进行项目的构建时都是使用手工进行文件夹的建立,maven也给我们提供了一个参数archetype,可以用来进行项目骨架的建立.使用maven archetype:generate进行创建: ...

  9. maven自定义脚手架(快速生成项目)

    Maven之自定义archetype生成项目骨架 利用脚手架生成 新项目 命令行方式 mvn archetype:generate \ -DarchetypeGroupId=com.xxx \ -Da ...

随机推荐

  1. HDU 4345

    细心点想,就明白了,题目是求和为N的各数的最小公倍数的种数.其实就是求N以内的各素数的不同的组合(包含他们的次方),当然,是不能超过N的.用Dp能解决.和背包差不多. #include <ios ...

  2. 从HTTP 2.0想到的关于传输层协议的一些事

    0.HTTP协议的历史 我也不知道... 1.关于HTTP 2.0 收到了订阅的邮件,头版是说HTTP 2.0的内容,我本人不是非常关注HTTP这一块儿.可是闲得无聊时也会瞟两眼的.HTTP 2.0的 ...

  3. 痛苦的人生——JRuby on Rails的开发与部署小记

    最近单位领导部署了一项开发用户自助服务系统的任务,该任务有且仅有我一人独立完成——哈哈,十分美妙的工作呢. 恰巧楼主最近被Ruby的美妙特性所迷惑,于是义无反顾地投入到Ruby on Rails的怀抱 ...

  4. excel如何将一列按奇偶数分成两列

    借助于函数.上图说明一切: 方法一.OFFSET函数, 奇数列公式:C1=OFFSET($A$1,ROW()*2-2,), 偶数列公式:D1=OFFSET($A$1,ROW()*2-1,) 一起下拉即 ...

  5. 流式计算新贵Kafka Stream设计详解--转

    原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...

  6. 欢迎来到SQL学院

    给学习SQL的同学的福利@ http://sqlschool.modeanalytics.com/ 第一部分 学习SQL 本教程是专为那些想用数据回答问题的人们而设计的.从很大程度上讲,SQL是数据分 ...

  7. jmeter的认识

    jmeter JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常被用做接口功能测试和性能测试. 它能够很好的支持各种常见接 ...

  8. SecurityManager USE

    import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io. ...

  9. oracle导入导出操作

    1,获取oracle导入导出帮助: imp help=y 2,导出命令 exp 用户名/密码@数据库实例 file=文件路径名 如: exp sys/password@orcl file=d:\dat ...

  10. 十款APP开发框架

    对于大部分Web开发人员,HTML.CSS和 Java是他们最熟练的开发技能.然而,开发一个原生的移动App,对他们来说却是完全陌生的领域.因为开发Android,iOS 或 Windows Phon ...