Maven(七) maven 常用命令
转载于:http://blog.csdn.net/hynet/article/details/8664747
1. 用Maven 命令创建一个简单的 Maven 项目
在cmd中运行如下命令:
- mvn archetype:generate
- -DgroupId=com.mycompany.app
- -DartifactId=my-app
- -Dversion=1.0
- -DarchetypeArtifactId=maven-archetype-quickstart
即可在当前目录创建一个简单的 maven 项目,创建的时候会从Maven库中下载相关的依赖。
执行成功后,进入创建的 my-app 目录,打开 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.mycompany.app</groupId>
- <artifactId>my-app</artifactId>
- <packaging>jar</packaging>
- <version>1.0</version>
- <name>my-app-simple</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
POM 包含了一个 project 所需要的所有信息,包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
我们开发Maven项目的时候,需要为其定义适当的坐标,在这个基础上,其他Maven项目才能应用该项目生成的构件。Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。其中,前三个是必须的,packaging 是可选的,而 classfier 是不能直接定义的。
下面是一组坐标定义:
- <groupId>com.mycompany.app</groupId>
- <artifactId>my-app</artifactId>
- <packaging>jar</packaging>
- <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,添加插件
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-archetype-plugin</artifactId>
- <version>2.2</version>
- </plugin>
- </plugins>
打开 cmd 窗口,进入刚才创建的 maven project 的根目录,运行maven命令:
- mvn archetype:create-from-project
然后会在target目录下面生成 generated-sources 目录,这个就是生成的 archetype,
进入到 archetype 目录,找到 pom.xml 文件,可修改该文件,增加 deploy 的设置,比如公司有 maven repository manager 服务器,以后就可以将该archetype部署到公司服务器上,便于其他人使用。比如:
- <distributionManagement>
- <repository>
- <id>releases</id>
- <name>MyCo Internal Repository</name>
- <url>http://192.168.200.88:9001/nexus/content/repositories/releases</url>
- </repository>
- <snapshotRepository>
- <id>snapshots</id>
- <name>MyCo Internal Repository</name>
- <url>http://192.168.200.88:9001/nexus/content/repositories/snapshots</url>
- </snapshotRepository>
- </distributionManagement>
部署到公司服务器的命令:
- mvn deploy
安装到本地仓库
- 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命令。
Maven(七) maven 常用命令的更多相关文章
- Maven使用笔记(一)Maven安装及常用命令
1.Windows下安装Maven 首先去下载Maven安装包,http://maven.apache.org/download.cgi,目前最新版本是 Maven 3.2.3 . 解压到本地,可以看 ...
- Maven 插件 maven-tomcat7-plugin - 常用命令及配置
常用命令 tomcat7:deploy 说明:部署 WAR 到 Tomcat tomcat7:help 说明:查看插件帮助信息 tomcat7:run 说明:支行当前项目 配置 <project ...
- 回顾:maven配置和常用命令整理
推荐两个库地址,开源中国的好像不好使了 阿里的仓库:http://maven.aliyun.com/nexus/content/groups/public/ 另一个:http://repo2.mave ...
- maven学习0 常用命令学习
mvn clean install -Dmaven.test.skip=truemaven的package与install命令区别: package是把jar打到本项目的target下,而instal ...
- maven安装与常用命令
maven安装: 下载地址http://maven.apache.org/download.cgi 1.安装好Java,配置好Java的环境变量(JDK) 2.下载apache-maven-3.5.2 ...
- [MAVEN]二、常用命令
mvn eclipse:eclipse :生成 Eclipse 项目文件,生成后可以导入到eclipse中使用 mvn install :在本地 Repository 中安装 jar ,若是Web项目 ...
- Maven的一些常用命令
将本项目的源码部署到本地仓库 mvn clean source:jar install 将本地jar包部署到本地仓库,首先将jar包放在当前目录下,然后执行,这样做比直接把jar包copy到本地仓库更 ...
- 慕课linux学习笔记(七)常用命令(4)
帮助命令 Man命令 Man的级别 命令帮助 可被内核调用的函数帮助 函数和函数库帮助 特殊文件帮助 /dev 配置文件帮助 游戏的帮助 其他杂项的帮助 管理员可用命令帮助 内核相关文件的帮助 -f ...
- Docker(七)-Dcoker常用命令
容器生命周期管理 run start/stop/restart kill rm pause/unpause create exec 容器操作 ps inspect top attach events ...
随机推荐
- 017PHP基础知识——流程控制语句(五)
<?php /** * break;退出循环: * 语法结构:break int;可以指定跳过几级循环: * while do_while for foreach switch */ /*$i= ...
- 安装win7和ubuntu双系统
最近买了新的笔记本电脑,发现新买的电脑上面安装的是win7用户版,在网上查了一下这个版本的win7是功能最少的...另外又发现偌大的500G硬盘居然只给分成2个区,每个250...各种不爽,于是决定格 ...
- 在JavaScript中进行文件处理,第五部分:Blobs
译注:原文是<JavaScript高级程序设计>的作者Nicholas Zakas写的,本翻译纯属为自己学习而做,仅供参考.原文链接:这里 到目前为止,这个系列的帖子集中在和这些文件交互- ...
- 集成学习之Boosting —— Gradient Boosting原理
集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 集成学习之Boosting -- Gradient Boosting原理 集成学习之Bo ...
- java基础第7天
Javabean的特点 私人成员变量 公共的成员方法 利用get/set成员方法对私人变量进行取值/赋值 构造方法(构造器) 构造方法(也叫构造器)是一种特殊的方法,定义的位置是在类中,成员方法外,和 ...
- 《转》深入理解Activity启动流程(三)–Activity启动的详细流程2
本文原创作者:Cloud Chou. 出处:本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启 ...
- 理解HTTP之Content-Type
http://homeway.me/2015/07/19/understand-http-about-content-type/
- 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转
感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...
- MQTT再学习 -- 搭建MQTT服务器及测试
最近在搞 PM2.5 采集,需要用到 MQTT 传输协议.协议部分看了几天的,讲的七七八八.本身在 intel 上有 写好的MQTT 的源码,现在的工作其实也就是移植到单片机上或者DM368板卡上.不 ...
- SVN 定时 更新代码 Demo
1. 涉及技术: Winservice: 用system身份后台跑: Quartz:定时任务: SVN 2. 思路: Quartz定时调用cmd 程序,执行SVN update 命令,整个程序寄宿 ...