【第十一篇】- Maven 项目模板

2023-11-07

Maven 项目模板

Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Maven 项目模板。

在前面章节我们学到 Maven 使用下面的命令来快速创建 java 项目:

mvn archetype:generate

什么是 archetype?

archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。我们将使用 quickstart 原型插件创建一个简单的 java 应用程序。


使用项目模板

让我们打开命令控制台,跳转到 C:\> MVN 目录并执行以下 mvn 命令:

C:\MVN> mvn archetype:generate 

Maven 将开始处理,并要求选择所需的原型:

Maven 将开始处理,并要求选择所需的原型:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]task-segment: [archetype:generate] (aggregator-style)
[INFO] -------------------------------------------------------------------
[INFO] Preparing archetype:generate
...
600: remote -> org.trailsframework:trails-archetype (-)
601: remote -> org.trailsframework:trails-secure-archetype (-)
602: remote -> org.tynamo:tynamo-archetype (-)
603: remote -> org.wicketstuff.scala:wicket-scala-archetype (-)
604: remote -> org.wicketstuff.scala:wicketstuff-scala-archetype 
Basic setup for a project that combines Scala and Wicket,
depending on the Wicket-Scala project. 
Includes an example Specs test.)
605: remote -> org.wikbook:wikbook.archetype (-)
606: remote -> org.xaloon.archetype:xaloon-archetype-wicket-jpa-glassfish (-)
607: remote -> org.xaloon.archetype:xaloon-archetype-wicket-jpa-spring (-)
608: remote -> org.xwiki.commons:xwiki-commons-component-archetype 
(Make it easy to create a maven project for creating XWiki Components.)
609: remote -> org.xwiki.rendering:xwiki-rendering-archetype-macro 
(Make it easy to create a maven project for creating XWiki Rendering Macros.)
610: remote -> org.zkoss:zk-archetype-component (The ZK Component archetype)
611: remote -> org.zkoss:zk-archetype-webapp (The ZK wepapp archetype)
612: remote -> ru.circumflex:circumflex-archetype (-)
613: remote -> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
614: remote -> sk.seges.sesam:sesam-annotation-archetype (-)
Choose a number or apply filter 
(format: [groupId:]artifactId, case sensitive contains): 203:

按下 Enter 选择默认选项 (203:maven-archetype-quickstart)。

Maven 将询问原型的版本

Maven 将询问原型的版本
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:

按下 Enter 选择默认选项 (6:maven-archetype-quickstart:1.1)

Maven 将询问项目细节。按要求输入项目细节。如果要使用默认值则直接按 Enter 键。你也可以输入自己的值。

Define value for property 'groupId': : com.companyname.insurance
Define value for property 'artifactId': : health
Define value for property 'version': 1.0-SNAPSHOT
Define value for property 'package': com.companyname.insurance

Maven 将要求确认项目细节,按 Enter 或按 Y

Confirm properties configuration:
groupId: com.companyname.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.companyname.insurance
Y:

现在 Maven 将开始创建项目结构,显示如下:

[INFO] -----------------------------------------------------------------------
[INFO] Using following parameters for creating project 
from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] -----------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.companyname.insurance
[INFO] Parameter: packageName, Value: com.companyname.insurance
[INFO] Parameter: package, Value: com.companyname.insurance
[INFO] Parameter: artifactId, Value: health
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\health
[INFO] -----------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -----------------------------------------------------------------------
[INFO] Total time: 4 minutes 12 seconds
[INFO] Finished at: Fri Jul 13 11:10:12 IST 2012
[INFO] Final Memory: 20M/90M
[INFO] -----------------------------------------------------------------------

创建的项目

现在转到 C:\ > MVN 目录。你会看到一个名为 health 的 java 应用程序项目,就像在项目创建的时候建立的 artifactId 名称一样。 Maven 将创建一个有标准目录布局的项目,如下所示:


创建 pom.xml

Maven 为项目自动生成一个 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.companyname.insurance</groupId>
  <artifactId>health</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>health</name>
  <url>http://maven.apache.org</url>
  <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
     <dependency>
     <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
     </dependency>
  </dependencies>
</project>

App.java

Maven 会自动生成一个测试的 java 文件 App.java。

路径:C:\MVN\consumerBanking\src\main\java\com\companyname\bank

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

AppTest.java

Maven 会自动生成一个 java 文件 AppTest.java。

路径为: C:\MVN\consumerBanking\src\test\java\com\companyname\bank

package com.companyname.insurance;
 
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 );
  }
}

就这样。现在你可以看到 Maven 的强大之处。你可以用 maven 简单的命令创建任何类型的项目,并且可以启动您的开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【第十一篇】- Maven 项目模板 的相关文章

随机推荐

  • 零死角玩转stm32-高级篇之FatFs

    零死角玩转stm32 高级篇之FatFs Rev R0 09 2013年08月05日 教程 评论数 1 被围观 1 579 2 FatFs Rev R0 09 2 1 实验描述及工程文件清单 实验描述 MicroSD卡文件系统 FATFS
  • 前端精度丢失处理

    前端操作数据时 如果数据超出一定范围会出现精度丢失的问题 这是因为 在传输过程中 数据类型被转换成Number Number的精度范围在2 53之间 即 9007199254740991 9007199254740991 超出范围就会造成精
  • visual studio code搭建Java环境 - 一步一个脚印详细教程

    visual studio code搭建Java环境 一 软件安装 二 添加环境变量 三 vscode配置 1 软件本身设置 2 编译环境配置 后记 一 软件安装 visual studio code下载链接 https azure mic
  • java 根据 SVN changeLog 文件 生成增量升级包

    近日在做项目的时候 遇到了个问题 因为本地环境与生产环境 不一致 所以修改之后的代码不能整体打包 放到生产环境 而是只能以增量包的形式升级 手动打包 费时费力 而且容易出错 于是参照网上一些博客开发了一个增量包打包工具 好闲言少叙 上代码
  • 面试了这么多场,“ 进程间的通信 ” 真是从不缺席,小伙伴们赶快重视起来!!

    进程间通信 1 管道 2 消息队列 3 共享内存 4 信号量 5 信号 6 Socket 套接字 每个进程的用户地址空间都是独立的 一般而言是不能互相访问的 但内核空间是每个进程都共享的 所以进程之间要通信必须通过内核 在内核中开辟一块缓冲
  • logback日志配置实例

    在pom xml文件中引入依赖
  • 数据分析学习总结笔记07:方差分析

    数据分析学习总结笔记07 方差分析 1 方差分析概述 1 1 方差分析简介 1 2 方差分析基本思想和原理 1 3 方差分析的基本假设 2 单因素方差分析 One way ANOVA 2 1 单因素方差分析概念 2 2 单因素方差分析的原理
  • 西门子PLC的S7协议报文解析说明

    我们以S7的1500系列来查看握手和读取 写入 字Word或者位Bit 命令报文 以下报文不做说明时都是十六进制字节 西门子PLC需要连接成功后发送两次握手命令方可进行读写通信 西门子PLC的S7协议的头由四个字节组成 第一个字节数固定为0
  • C#实现全盘扫描,找到符合要求的文件,并把路径写入到TXT中

    好久没更新文章了 来水一篇 最近领导安排了个任务 让把服务器上符合要求的文件的路径找出来 windos自带的搜索功能太慢了 everything不想下载 想着自己实现一个 实现完成发现速度也不是很慢 实现思路 1 先把电脑中的所有驱动器名称
  • 【Linux】socket 编程基础

    文章目录 网络间的通信 socket 是什么 1 socket 套接字 2 套接字描述符 3 基本的 socket 接口函数 3 1 头文件 3 2 socket 函数 3 3 bind 函数 struct sockaddr 主机序列与网络
  • [亲测可用]springBoot调用对方webService接口的几种方法示例

    目录 前言 一 需要用到的maven 二 如何调用webservice接口 调用方法一 调用方法二 myEclipse生成的例子 idea生成的例子 前言 平常我们开发调用接口一般会用到几种数据格式 比如有restful的 这个是目前最流行
  • QT5在首次连接MYSQL时候找不到头文件问题

    我碰到的问题是这样的 在我之前写好 没有报错 的QT程序内添加MYSQL 但是报错 error C1083 无法打开包括文件 QSqlDatabase No such file or directory 在网上查找后发现没有添加对应的模块
  • pandas行列转换的4大技巧

    公众号 尤而小屋作者 Peter编辑 Peter 大家好 我是Peter 本文介绍的是Pandas中4个行列转换的方法 包含 melt 转置T或者transpose wide to long explode 爆炸函数 最后回答一个读者朋友问
  • C-switch case之如何巧妙判断范围区域

    当判断整数时 示例 判断整数范围 include
  • WebGL笔记 (侧重理论基础向)

    要把Cesium three js 这些玩明白还是要有WebGL的知识的 不然只是官方demo的ctrl cv侠 本笔记参考的教程 2022年WebGL入门教程 完结 哔哩哔哩 bilibili 一 初级 二维 1 1 坐标系 WebGL的
  • 操作臂的运动学

    操作臂的运动学 文章目录 操作臂的运动学 2 1 连杆的描述 2 2 操作臂的运动学 2 2 1 连杆变换 2 2 2例子 PUMA560连杆参数 参考文献 2 1 连杆的描述 机器人中每个连杆都可以用四个运行学参数来描述 其中两个描述连杆
  • c++指针

    C 指针部分 1 引用 reference 指针部分 1 引用 reference 为对象起另外一个名字 引用即别名 定义 int value 100 refValue 指向value 是value的另一个名字 int refValue v
  • synchronized 和 lock 有什么区别?

    synchronized 和 lock 有什么区别 Lock能够完成synchronized的所有功能并且Lock提供了比synchronized更多的功能 Lock和synchronized的选择 总结来说 Lock和synchroniz
  • 安全岗春招面经总结

    五一过后 春招就差不多结束了 今年的春招面过的小伙伴懂的都懂 铜三铁四orz 在没有大的技术突破之前互联网就业环境只会一年不如一年 然后因为我自己更想要留在川渝这边工作 觉得北上广深的生活节奏太快不适合自己这种慢性子的人 所以大部分也都面的
  • 【第十一篇】- Maven 项目模板

    Maven 项目模板 Maven 使用 archetype 原型 来创建自定义的项目结构 形成 Maven 项目模板 在前面章节我们学到 Maven 使用下面的命令来快速创建 java 项目 mvn archetype generate 什