zoukankan      html  css  js  c++  java
  • Maven(七) maven 常用命令

    转载于:http://blog.csdn.net/hynet/article/details/8664747

    1. 用Maven 命令创建一个简单的 Maven 项目

    在cmd中运行如下命令:

    [cpp] view plain copy
     
    1. mvn archetype:generate   
    2. -DgroupId=com.mycompany.app   
    3. -DartifactId=my-app  
    4. -Dversion=1.0   
    5. -DarchetypeArtifactId=maven-archetype-quickstart  

    即可在当前目录创建一个简单的 maven 项目,创建的时候会从Maven库中下载相关的依赖。

    执行成功后,进入创建的 my-app 目录,打开 pom.xml 文件,内容如下:

    [html] view plain copy
     
    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
    3.   <modelVersion>4.0.0</modelVersion>  
    4.   <groupId>com.mycompany.app</groupId>  
    5.   <artifactId>my-app</artifactId>  
    6.   <packaging>jar</packaging>  
    7.   <version>1.0</version>  
    8.   <name>my-app-simple</name>  
    9.   <url>http://maven.apache.org</url>  
    10.   <dependencies>  
    11.     <dependency>  
    12.       <groupId>junit</groupId>  
    13.       <artifactId>junit</artifactId>  
    14.       <version>3.8.1</version>  
    15.       <scope>test</scope>  
    16.     </dependency>  
    17.   </dependencies>  
    18. </project>  

    POM 包含了一个 project 所需要的所有信息,包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

    我们开发Maven项目的时候,需要为其定义适当的坐标,在这个基础上,其他Maven项目才能应用该项目生成的构件。Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。其中,前三个是必须的,packaging 是可选的,而 classfier 是不能直接定义的。

    下面是一组坐标定义:

    [html] view plain copy
     
    1. <groupId>com.mycompany.app</groupId>  
    2. <artifactId>my-app</artifactId>  
    3. <packaging>jar</packaging>  
    4. <version>1.0</version>  

    groupId :定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一的关系。比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。

    artifactId : 该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如上例中的my-app。

    version : 该元素定义Maven项目当前的版本

    packaging :定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-1.0.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven 会使用默认值 jar

    classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-1.0.jar,该项目可能还会通过一些插件生成如my-app-1.0-javadoc.jar,my-app-1.0-sources.jar, 这样附属构件也就拥有了自己唯一的坐标

    2.maven 基本命令

    编译compile

    在cmd中,将目录切换到 my-app 下,执行mvn clean compile

    build success之后我们会在my-app 下看到新增了一个target目录,该目录下存放项目编译后的文件,如.class文件

    清理clean

    cmd目录my-app下执行命令 mvn clean

    会将target文件删除,即清理项目,该命令可以结合其他命令运行

    测试test

    cmd 目录 my-app 下执行命令 mvn test

    会执行src/test/java 下的Junit 测试代码,在执行测试之前会自动执行编译命令。

    打包package

    cmd 目录 my-app 下执行命令 mvn package

    会将项目打成jar包,并放在target目录中

    执行此命令之前会先执行编译和测试命令

    安装:install

    cmd 目录 my-app 下执行命令 mvn install

    会将项目jar包安装到本地仓库中,以便其他项目使用

    执行此命令之前会先执行编译,测试,打包命令

    3.创建自定义archetype

    创建一个新的 maven 项目,将配置好的公共文件放到相应目录。

    注意:上面要生成模版的项目的版本号不能带-SNAPSHOT,否则找不到的,直接用数字1.0等就可以了。

    编辑 pom.xml,添加插件

    [html] view plain copy
     
    1. <plugins>  
    2.     <plugin>  
    3.         <groupId>org.apache.maven.plugins</groupId>  
    4.         <artifactId>maven-archetype-plugin</artifactId>  
    5.         <version>2.2</version>  
    6.     </plugin>  
    7. </plugins>  

    打开 cmd 窗口,进入刚才创建的 maven project  的根目录,运行maven命令:

    [html] view plain copy
     
    1. mvn archetype:create-from-project  


    然后会在target目录下面生成 generated-sources 目录,这个就是生成的 archetype,

    进入到 archetype 目录,找到 pom.xml 文件,可修改该文件,增加 deploy 的设置,比如公司有 maven repository manager 服务器,以后就可以将该archetype部署到公司服务器上,便于其他人使用。比如:

    [html] view plain copy
     
    1. <distributionManagement>   
    2.     <repository>   
    3.         <id>releases</id>   
    4.         <name>MyCo Internal Repository</name>   
    5.         <url>http://192.168.200.88:9001/nexus/content/repositories/releases</url>   
    6.     </repository>   
    7.     <snapshotRepository>   
    8.         <id>snapshots</id>   
    9.         <name>MyCo Internal Repository</name>   
    10.         <url>http://192.168.200.88:9001/nexus/content/repositories/snapshots</url>   
    11.     </snapshotRepository>   
    12. </distributionManagement>  

    部署到公司服务器的命令:

    [html] view plain copy
     
    1. mvn deploy  


    安装到本地仓库

    [html] view plain copy
     
    1. mvn install  


    archetype安装的地址是在maven安装目录下面的conf/settings.xml文件中指定的(<localRepository>字节)。

    默认会在 ~/.m2 目录下面生成一个archetype-catalog.xml文件(和默认的settings.xml在同一个目录),声明了该archetype的groupId、artifactId和其他属性。如果没有找到,则保存在默认 ~/.m2 目录下。

    Eclipse创建maven项目过程中,选择的“Default Local”指向的地址就是 ~/.m2,所以文件archetype-catalog.xml会被eclipse自动读取,使用eclipse创建maven项目的时候可以在"Default Local"一项中找到刚才自定义archetype名字。

    如果想要卸载刚才安装的archetype,只需要将~/.m2目录下面的archetype-catalog.xml文件中对应的<archetype>字节段删掉,并且把本地仓库中相应groupId和artifactId下面的文件删掉就可以了。


    安装到本地仓库中的archetype只可以被自己使用,如果想要共享,那么不要使用install命令。

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/luffigo/p/5224758.html
Copyright © 2011-2022 走看看