• Maven 入门 (2)—— 创建Maven项目


    http://blog.csdn.net/kakashi8841/article/details/17427043

    读这篇文章之前请先确保你成功安装了maven,如果你还没安装成功,请先看:Maven 入门 (1)—— 安装 这里的文章安装成功再继续。

    因为maven在执行一些插件目标的时候可能会从中心数据库下载依赖的文件,因此,使用maven的时候请保持联网状态。

    现在如果你已经迫不及待了,那么可以尝试在命令行终端先输入:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. mvn clean install  

    这时候会打印正在下载各种文件。是不是感觉很爽呢?好了,下面我们开始进入正题:

    1、先创建一个Maven项目。

    在终端输入命令然后执行:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  
    和之前一样,现在它也是在不停下载各种所需要的文件。
    等到命令结束后,你发现当前目录下多了一个叫my-app的目录,它里面有pom.xml和src目录,如下图:

    完整目录结构如下:

    是不是很神奇嘞?
    神奇归神奇,刚刚那个命令那么复杂,它到底是什么意思,做了什么操作?别急,我们慢慢看。
    
    
    首先,你刚刚执行了一个maven的目标"archetype:generate",并传了不同的参数给那个目标。"archetype"是一个插件,它包含了"generate"这个目标。如果你熟悉Ant,你可以假设它就是ant中的task。这个目标创建基于原型之上的简单工程。总之就是,插件是一系列通用目标的集合。例如jboss-maven-plugin,就是用于处理各种不同的jboss项目。
    
    
    接着,我们来看看 -DgroupId  -DartifactId -DarchetypeArtifactId -DinteractiveMode 这几个属性
    其实它们是Java执行时的参数。
    groupId:一般填的是项目名,有的人喜欢填公司名。这里说下,一个公司一般是有多个项目的,如果这里填公司名,那么artifactId只能填项目名了。而version毫无疑问是版本号。这样在项目的划分上粒度比较粗。因此,我一般groupId是填到项目。比如:com.taobao.shop。
    artifactId:上面填了项目,那么这里就可以填模块了。比如:login
    version:这里填的是本模块版本。
    OK上面的groupId、artifactId、version(简称GAV)构成了maven中的“定位系统“,理论上所有的依赖包都可以通过GAV找到。
    
    
    我们接着看其它参数,
    archetypeArtifactId:这个参数其实是指定一个模版来初始化生成你的项目。比如你是一个普通的java应用程序,还是一个web程序,都有对应的模版。
    
    
    如果你还是不懂怎么生成一个maven项目,那么,你也可以通过命令行:

    mvn help:describe -Dplugin=archetype

    一样的,这里help也是一个插件,然后describe是目标,而-Dplugin参数指明了describe要查看的是archetype插件的信息。

    这样就能获得archetype这个插件的帮助。

    Name: Maven Archetype Plugin

    Description: Maven Archetype is a set of tools to deal with archetypes, i.e.

      an abstract representation of a kind of project that can be instantiated into

      a concrete customized Maven project. An archetype knows which files will be

      part of the instantiated project and which properties to fill to properly

      customize the project.

    Group Id: org.apache.maven.plugins

    Artifact Id: maven-archetype-plugin

    Version: 2.2

    Goal Prefix: archetype

    This plugin has 8 goals:

    archetype:crawl

      Description: Crawl a Maven repository (filesystem, not HTTP) and creates a

        catalog file.

    archetype:create

      Description: The archetype creation goal looks for an archetype with a

        given groupId, artifactId, and version and retrieves it from the remote

        repository. Once the archetype is retrieved, it is then processed against a

        set of user parameters to create a working Maven project.

      Deprecated. Please use the generate mojo instead.

    archetype:create-from-project

      Description: Creates an archetype project from the current project.

        

        This goal reads your source and resource files, the values of its

        parameters, and properties you specify in a .property file, and uses them

        to create a Maven archetype project using the maven-archetype packaging. If

        you build the resulting project, it will create the archetype. You can then

        use this archetype to create new projects that resemble the original.

        

        The maven-archetype-plugin uses Velocity to expand template files, and this

        documentation talks about 'Velocity Properties', which are values

        substituted into Velocity templates. See The Velocity User's Guide for more

        information.

        

        This goal modifies the text of the files of the current project to form the

        Velocity template files that make up the archetype.

        

        GAV

          The GAV values for the current project are replaced by properties:

          groupId, artifactId, and version. The user chooses new values for these

          when generating a project from the archetype.

        package

          All the files under one specified Java (or cognate) package are relocated

          to a project that the user chooses when generating a project. References

          to the class name are replaced by a property reference. For example, if

          the current project's sources are in the package

          org.apache.saltedpeanuts, then any example of the string

          org.apache.saltedpeanuts is replaced with the Velocity property reference

          ${packageName}. When the user generates a project, this is in turn

          replaced by his or her choice of a package.

        custom properties

          You may identify additional strings that should be replaced by

          parameters. To add custom properties, you must use the propertyFile

          parameter to specify a property file. See the documentation for

          propertyFile for the details.

        

        Note that you may need to edit the results of this goal. This goal has no

        way to exclude unwanted files, or add copyright notices to the Velocity

        templates, or add more complex elements to the archetype metadata file.

        

        This goal also generates a simple integration-test that exercises the

        generated archetype.

    archetype:generate

      Description: Generates a new project from an archetype, or updated the

        actual project if using a partial archetype. If the project is fully

        generated, it is generated in a directory corresponding to its artifactId.

        If the project is updated with a partial archetype, it is done in the

        current directory.

    archetype:help

      Description: Display help information on maven-archetype-plugin.

        Call

          mvn archetype:help -Ddetail=true -Dgoal=<goal-name>

        to display parameter details.

    archetype:integration-test

      Description: Execute the archetype integration tests, consisting in

        generating projects from the current archetype and optionally comparing

        generated projects with reference copy.

        

        

        Each IT consists of a sub-directory in src/test/resources/projects

        containing:

        

        - a goal.txt file, containing a list of goals to run against the generated

          project (can be empty, content ignored before maven-archetype-plugin

          2.1),

        - an archetype.properties file, containing properties for project

          generation,

        - an optional reference/ directory containing a reference copy of the

          expected project created from the IT.

        

        Notice that it is expected to be run as part as of a build after the

        package phase and not directly as a goal from CLI.

    archetype:jar

      Description: Build a JAR from the current Archetype project.

    archetype:update-local-catalog

      Description: Updates the local catalog

    For more information, run 'mvn help:describe [...] -Ddetail'

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 3.851s

    [INFO] Finished at: Tue Dec 24 02:45:02 CST 2013

    [INFO] Final Memory: 11M/156M

    [INFO] ------------------------------------------------------------------------

    我们注意到:archetype这个插件本身也有个help目标,似乎能查找更多帮助信息。

    那么我们可以尝试用下面命令来查找generate目标的信息:

    mvn archetype:help -Ddetail=true -Dgoal=generate

     
    然后,这时候返回的内容是:

    cmatoMacBook-Pro:~ cjunhong$ mvn archetype:help -Ddetail=true -Dgoal=generate

    [INFO] Scanning for projects...

    [INFO]                                                                         

    [INFO] ------------------------------------------------------------------------

    [INFO] Building Maven Stub Project (No POM) 1

    [INFO] ------------------------------------------------------------------------

    [INFO] 

    [INFO] --- maven-archetype-plugin:2.2:help (default-cli) @ standalone-pom ---

    [INFO] org.apache.maven.plugins:maven-archetype-plugin:2.2

    Maven Archetype Plugin

      Maven Archetype is a set of tools to deal with archetypes, i.e. an abstract

      representation of a kind of project that can be instantiated into a concrete

      customized Maven project. An archetype knows which files will be part of the

      instantiated project and which properties to fill to properly customize the

      project.

    archetype:generate

      Generates a new project from an archetype, or updated the actual project if

      using a partial archetype. If the project is fully generated, it is generated

      in a directory corresponding to its artifactId. If the project is updated with

      a partial archetype, it is done in the current directory.

      Available parameters:

        archetypeArtifactId

          The archetype's artifactId.

          Expression: ${archetypeArtifactId}

        archetypeCatalog (Default: remote,local)

          The archetype catalogs to use to build a list and let the user choose

          from. It is a comma separated list of catalogs. Catalogs use following

          schemes:

          - 'file://...' with archetype-catalog.xml automatically appended when

            pointing to a directory

          - 'http://...' or 'https://...' with archetype-catalog.xml always appended

          - 'local' which is the shortcut for 'file://~/.m2/archetype-catalog.xml'

          - 'remote' which is the shortcut for Maven Central repository, ie

            'http://repo1.maven.org/maven2'

          - 'internal' which is an internal catalog

          Since 2.0-alpha-5, default value is no longer internal,local but

          remote,local. If Maven Central repository catalog file is empty, internal

          catalog is used instead.

          Expression: ${archetypeCatalog}

        archetypeGroupId

          The archetype's groupId.

          Expression: ${archetypeGroupId}

        archetypeRepository

          The archetype's repository.

          Expression: ${archetypeRepository}

        archetypeVersion

          The archetype's version.

          Expression: ${archetypeVersion}

        basedir

          (no description available)

          Expression: ${basedir}

        filter

          Applying some filter on displayed archetypes list: format is artifactId or

          groupId:artifactId.

          - org.apache: -> displays all archetypes which contain org.apache in

            groupId

          - :jee or jee -> displays all archetypes which contain jee in artifactId

          - org.apache:jee -> displays all archetypes which contain org.apache in

            groupId AND jee in artifactId

          Expression: ${filter}

        goals

          Additional goals to immediately run on the project created from the

          archetype.

          Expression: ${goals}

        interactiveMode (Default: ${settings.interactiveMode})

          User settings use to check the interactiveMode.

          Required: Yes

          Expression: ${interactiveMode}

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 1.088s

    [INFO] Finished at: Tue Dec 24 02:56:42 CST 2013

    [INFO] Final Memory: 9M/156M

    [INFO] ------------------------------------------------------------------------

    看到没有,连我们刚刚没有解释的interactiveMode参数,它里面也都有了说明了。

    所以,要善于利用help插件来查找某个插件的信息,然后如果得知这个插件有help目标查找更详细信息,那么就更好了!

  • 相关阅读:
    CoffeeScript介绍
    在ubuntu下安装rails
    NodeJS扫盲班
    sguID056681
    UVA11865 Stream My Contest(最小树形图)
    POJ1469COURSES(二分图最大匹配)
    UVA1494 Qin Shi Huang's National Road System(最小生成树)
    UVA11478 Halum(差分约束系统)
    二分图最大匹配总结
    POJ1466Girls and Boys(二分图最大独立集)
  • 原文地址:https://www.cnblogs.com/123ing/p/4132952.html
Copyright © 2020-2023  润新知