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. 关于C++构造函数一二

    关于构造函数的调用顺序: 1.继承关系 2.从属关系 3.static声明的从属关系 关于拷贝构造函数的声明: classname(const classname & rhs) #includ ...

  2. hdu 4717 The Moving Points(三分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4717 大致题意:给出每一个点的坐标以及每一个点移动的速度和方向. 问在那一时刻点集中最远的距离在全部时刻的最远距 ...

  3. 交叉编译faac共享库

    作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 Advanced Audio Coding.一种专为声音数据设计的文件压缩格式,与Mp3不同,它採 ...

  4. Linux系统编程——进程替换:exec 函数族

    在 Windows 平台下,我们能够通过双击运行可运行程序,让这个可运行程序成为一个进程.而在 Linux 平台.我们能够通过 ./ 运行,让一个可运行程序成为一个进程. 可是.假设我们本来就执行着一 ...

  5. CodeForcess--609B--The Best Gift(模拟水题)

    The Best Gift Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submi ...

  6. 将字符串序列化Object格式

    using Newtonsoft.Json; 首先引用  Newtonsoft.Json; 定义一个字符串 string str = "[{'ID':8.0,'PAGEID':201.0,' ...

  7. Python 函数(二)

    参数 以下是调用函数时可使用的正式参数类型: 必备参数 关键字参数 默认参数 不定长参数 必备参数 必备参数须以正确的顺序传入函数.调用时的数量必须和声明时的一样. 调用printme()函数,你必须 ...

  8. Centos7 minimal 系列之rabbitmq安装(八)

    一.安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. 这种方法网站访问不了 wget https://packages.erlang-solutions.com/ ...

  9. JavaScript系列--浅析原型链与继承

    一.前言 继承是面向对象(OOP)语言中的一个最为人津津乐道的概念.许多面对对象(OOP)语言都支持两种继承方式::接口继承 和 实现继承 . 接口继承只继承方法签名,而实现继承则继承实际的方法.由于 ...

  10. struts.xml里面子元素的配置

    <struts> <!-- package:包,struts2使用package来组织模块 name属性:必须,用于其他的包引用当前包 extends:当前包继承哪个包,继承的,即可 ...