• [Maven实战](5)Archetype生成项目骨架


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

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

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

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

    为此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 epository)

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

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

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

    6.png
    7.png

    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 );
    }
    }

    项目结构:
    8.png

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


    来源于:《maven实战》


  • 相关阅读:
    裸二分图匹配poj1469
    洛谷——P2038 无线网络发射器选址
    洛谷—— P1041 传染病控制
    洛谷—— P1784 数独
    Vijos——T 1092 全排列
    Vijos—— T 1359 Superprime
    高并发解决方案--负载均衡
    request 发送多层字典
    June 11th 2017 Week 24th Sunday
    June 10th 2017 Week 23rd Saturday
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7070541.html
Copyright © 2020-2023  润新知