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

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

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


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

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


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

假设是Maven3。简单的执行:
  1. mvn archetype:generate
  2.  
假设是Maven2,最好执行例如以下命令:
  1. mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
  2.  
在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也被创建好了。而且包括了一个測试用例。

  1. package com.sjf.model;
  2.  
  3. /**
  4. * Hello world!
  5. *
  6. */
  7. public class App
  8. {
  9. public static void main( String[] args )
  10. {
  11. System.out.println( "Hello World!" );
  12. }
  13. }
  14.  

  1. package com.sjf.model;
  2.  
  3. import junit.framework.Test;
  4. import junit.framework.TestCase;
  5. import junit.framework.TestSuite;
  6.  
  7. /**
  8. * Unit test for simple App.
  9. */
  10. public class AppTest
  11. extends TestCase
  12. {
  13. /**
  14. * Create the test case
  15. *
  16. * @param testName name of the test case
  17. */
  18. public AppTest( String testName )
  19. {
  20. super( testName );
  21. }
  22.  
  23. /**
  24. * @return the suite of tests being tested
  25. */
  26. public static Test suite()
  27. {
  28. return new TestSuite( AppTest.class );
  29. }
  30.  
  31. /**
  32. * Rigourous Test :-)
  33. */
  34. public void testApp()
  35. {
  36. assertTrue( true );
  37. }
  38. }
  39.  

项目结构:


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


来源于:《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. 数据可视化利器pyechart和matplotlib比较

    python中用作数据可视化的工具有多种,其中matplotlib最为基础.故在工具选择上,图形美观之外,操作方便即上乘. 本文着重说明常见图表用基础版matplotlib和改良版pyecharts作 ...

  2. 【翻译自mos文章】11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值

    [翻译自mos文章]11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值 来源于: Default and Minimum ME ...

  3. 0x04 二分

    二分.三分其实没什么.. 但是真心觉得市面上的朴素二分打法千奇百怪,假如是像我的标程应该是比较稳妥的,然而poj2018那题(前缀和又想起来了)是向下取整,精度有点问题(经常拍出一些什么xxx.999 ...

  4. 英语发音规则---T字母

    英语发音规则---T字母 一.总结 一句话总结: 1.T一般发[t]? ten [ten] num.十 letter [ˈletə(r)] n.信; 证书 meet [mi:t] vt.& v ...

  5. ES JVM使用如果超过75%就会GC较多,导致ES索引性能下降

    转自:https://www.elastic.co/guide/en/cloud/current/ec-metrics-memory-pressure.html Scenario: How Does ...

  6. 蓝桥杯-- 历届试题 核桃的数量 (gcd)

      历届试题 核桃的数量   时间限制:1.0s   内存限制:256.0MB        问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋 ...

  7. Python 下的 return 关键字

    def make_sum(a, b): return ('+', a, b) >> make_sum(1, 2) ('+', 1, 2) 显示地返回一个元组(tuple),当然 retur ...

  8. 【POJ 2482】 Stars in Your Windows

    [题目链接] http://poj.org/problem?id=2482 [算法] 线段树 + 扫描线 [代码] #include <algorithm> #include <bi ...

  9. 从git源码安装zabbix-agent

    从网上随便找了几个image,都是从svn下载的代码,根本跑不了,于是自己重新做了个,从git上拿的源码,只是build出来的image有点大,有时间再优化了 Dockerfile FROM cent ...

  10. checkbox改写

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...