java—(2)maven基本命令

article/2025/9/14 16:16:09
均在含pom.xml文件的路径下执行

maven命令执行是按阶段执行的。如执行mvn package。则实际上已经执行了例如以下命令:

假设想执行到test停止。执行mvn test

maven项目类型:
jar:java项目
war:web项目

maven依赖
Maven 下载依赖不仅仅是下载 JAR 文件,它同一时候为这个依赖下载一个 POM 文件
在 Maven 中一个依赖不不过一个 JAR

它是一个 POM 文件。这个 POM 可能也声明了对其他构件的依赖。这些依赖的依赖叫做传递性依赖。 


1. 创建Maven的普通java项目
  • mvn archetype:generate -DgroupId=packageName  -DartifactId=projectName   -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. 创建Maven的Web项目  
  • mvn archetype:generate -DgroupId=packageName  -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp 

    -DinteractiveMode=false
3. 打jar包在本地Repository中安装jar
  • mvn install 
4. 仅仅打jar包
  • mvn jar:jar  
5. 測试程序
  • java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
6. 查看有效的POM它暴露了 Maven的默认设置
  • mvn help:effective-pom 
7. 生成项目相关信息的报告(target/site文件夹下)
  • mvn site                   
8. 忽略測试失败

9. 打包时跳过測试
  • mvn install -Dmaven.test.skip=true
        
10. 安装指定文件到本地仓库
  • mvn install:install-file -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=1.0.0 -Dpackaging=jar -Dfile=<myfile.jar>
11. 将项目转化为Eclipse项目
  • mvn eclipse:eclipse                
12. 分析项目的依赖信息
  • mvn dependency:analyze 
  • mvn dependency:tree 打印整个依赖树
  • mvn dependency:resolve 打印出已解决依赖的列表
13. 查看帮助信息
  • mvn help:help 
  • mvn help:help -Ddetail=true
14. 调试
  • mvn -e            显示具体错误 信息  
  • mvn generate-sources    产生应用须要的不论什么额外的源码,如xdoclet。

  • mvn install -X 想要查看完整的依赖踪迹。包括那些由于冲突或者其他原因而被拒绝引入的构件,打开 Maven 的调试标记执行

15. 清除产生的项目
  • mvn clean 

    (删除target文件夹下编译内容)

16. 在应用程序用使用多个存储库
<repositories>    
    <repository>      
        <id>Ibiblio</id>      
        <name>Ibiblio</name>      
        <url>http://www.ibiblio.org/maven/</url>    
    </repository>    
    <repository>      
        <id>PlanetMirror</id>      
        <name>Planet Mirror</name>      
        <url>http://public.planetmirror.com/pub/maven/</url>    
    </repository>  
</repositories>

17. Maven项目编译步骤
  1. 第一、main文件夹下的主代码编写完成后。使用Maven进行编译,在项目根文件夹下执行命令mvn clean compile进行项目编译。
  2. 第二、test文件夹下的測试用例编写完成之后就能够调用Maven执行測试,执行mvn clean test进行測试。
  3. 第三、将项目进行编译、測试之后。下一个重要步骤就是打包(package)。在pom.xml中定义<packaging>war</packaging>标签表示将要把project打成什么类型的包(默认是jar类型),我们能够简单地执行命令mvn clean package进行打包。

  4. 第四、至此,我们得到了项目的输出,假设我们把项目打成了jar文件而且须要在其它项目中使用的话,就能够复制这个jar文件到其它项目的Classpath中从而使用这个项目中的类。可是。怎样才干让其它的Maven项目直接引用这个jar呢?我们还须要一个安装的步骤,运行mvn clean install命令。

  5. 第五、假设项目中有一个拥有main方法的类须要被调用运行。默认打包生成的jar是不可以直接运行的main方法的。由于带有main方法的类信息不会加入到manifest中(我们可以打开jar文件里的META-INF/MANIFEST.MF 文件,将无法看到Main-Class一行)。

    为了生成

    可运行的jar文件。我们须要借助maven-shade-plugin插 件,配置该插件例如以下:
 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.todaytech.framework.utils.VoConvertXmlUtils</mainClass></transformer></transformers></configuration></execution></executions></plugin>
  
   plugin元素在POM中的相对位置应该在<project><build><plugins>以下。我们配置了mainClass  com.todaytech.framework.utils.VoConvertXmlUtils ,项目在打包时会将该信息放到MANIFEST中。现 在执行 mvn clean install。待构建完毕之后打开target/文件夹,我们能够看到 S3h3WebWs-0.0.1-SNAPSHOT.jar和original-S3h3WebWs-0.0.1-SNAPSHOT.jar,前者是带有Main-Class信息 的可执行jar。后者是原始的jar,打开hello-world-1.0-SNAPSHOT.jar的META-INF/MANIFEST.MF。能够看到它包括这样一行信息:Main-Class: com.todaytech.framework.utils.VoConvertXmlUtils。

如今,我们在项目根文件夹中运行该jar文件:
   D: \code\S3h3WebWs>java -jar target\S3h3WebWs-0.0.1-SNAPSHOT.jar
   Hello Maven
   控制台输出为Hello Maven。这正是我们所期望的。

在pom.xml文件里添加servlet容器的插件:

<build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><version>6.1.6</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.6</source><target>1.6</target><encoding>UTF-8</encoding></configuration></plugin></plugins>
</build>

启动tomcat:
mvn tomcat:run
启动jetty:
mvn jetty:run

POM间关系
  • 依赖关系(dependencies)

依赖关系举例:

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId><version>3.2.6.ga</version></dependency>

  • 继承关系(parent)

继承关系举例:

继承其它pom.xml配置的内容。

maven提供了一个类似java.lang.Object的顶级父pom.xml文件。

能够通过以下命令 查看当前pom.xml受到超pom.xml文件的影响 :mvn help:effective-pom。

创建一个各种项目可复用的pom.xml文件。

部署要复用的pom.xml文件:mvn install。

在自己的pom文件里继承上述pom:

 <parent><groupId>com.easymorse</groupId><artifactId>pom</artifactId><version>0.1</version>
</parent>
  • 聚合关系(modules)

聚合关系举例:

用于将多个maven项目聚合为一个大的项目。 比方文件夹结构例如以下:

. |-- pom.xml |-- module-a `-- pom.xml |-- module-b `-- pom.xml |-- module-c `-- pom.xml |-- foo-all `-- pom.xml

那么总的pom.xml文件类似:
 ... <modules><module>module-a</module><module>module-b</module><module>module-c</module><module>foo-all</module></modules>

把项目部署到tomcat下的做法:

tomcat配置有管理权限的用户:conf\tomcat-users.xml。

<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="marshal" password="password" roles="manager"/> </tomcat-users> 在pom文件的tomcat插件中加入: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <url>http://localhost:8080/manager</url> <server>myserver</server> <path>/mycontext</path> </configuration> </plugin> 在.m2/settings.xml文件里添加: <settings 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/settings-1.0.0.xsd"> <servers> <server> <id>myserver</id> <username>marshal</username> <password>password</password> </server> </servers> </settings>


  • 执行打包部署。在maven项目文件夹下:  mvn tomcat:deploy
  • 撤销部署:  mvn tomcat:undeploy
  • 启动web应用:mvn tomcat:start
  • 停止web应用:mvn tomcat:stop
  • 又一次部署:mvn tomcat:redeploy
  • 部署展开的war文件:  mvn war:exploded tomcat:exploded

Pom文件解释

pom是指project object Model。

pom是一个xml,在maven2里为pom.xml。是maven工作的基础。在运行task或者goal时,maven会去项目根文件夹下读取pom.xml获得须要的配置信息。

pom文件里包括了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本号、成员)、项目的依赖、插件和goal、build选项等等。

pom是能够继承的。通常对于一个大型的项目或是多个module的情况,子模块的pom须要指定父模块的pom。

Project pom文件的顶级元素
modelVersion 所使用的object model版本号。为了确保稳定的使用,这个元素是强制性的。除非maven开发人员升级模板,否则不须要改动。

 

groupId 是项目创建团体或组织的唯一标志符,一般是域名倒写,如groupId  org.apache.maven.plugins就是为全部maven插件预留的。 
artifactId 是项目artifact唯一的基地址名。
packaging artifact 打包的方式。如jar、war、ear等等。默觉得jar。这个不仅表示项目终于产生何种后缀的文件。也表示build过程使用什么样的lifecycle。
version artifact 的版本号,通常能看见为类似0.0.1-SNAPSHOT,当中SNAPSHOT表示项目开发中。为开发版本号。

name 表示项目的展现名,在maven生成的文档中使用。
url 表示项目的地址,在maven生成的文档中使用。
description 表示项目的描写叙述,在maven生成的文档中使用。
dependencies 表示依赖。在子节点dependencies中加入详细依赖的groupId artifactId和version。
build 表示build配置。
parent 表示父pom。
当中groupId:artifactId:version唯一确定了一个artifact。
Artifact构件(jar、war、pom)

这个有点不好解释。大致说就是一个项目将要产生的文件,能够是jar文件,源文件。二进制文件,war文件,甚至是pom文件。每一个artifact都由groupId:artifactId:version组成的标识符唯一识别。须要被使用(依赖)的artifact都要放在仓库(见Repository)中。
Repositories(仓库)

Repositories是用来存储Artifact的。

假设说我们的项目产生的Artifact是一个个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也能够储存别人造的工具,我们在项目中须要使用某种工具时。在pom中声明dependency,编译代码时就会依据dependency去下载工具(Artifact),供自己使用。

对于自己的项目完毕后能够通过mvn install命令将项目放到仓库(Repositories)中
仓库分为本地仓库和远程仓库。远程仓库是指远程server上用于存储Artifact的仓库。本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的.m2/repository以下。

Build Lifecycle(编译过程、生命周期)

是指一个项目build的过程。maven的Build Lifecycle分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们都包括不同的lifecycle。
Build Lifecycle是由phases构成的,以下重点介绍default Build Lifecycle几个重要的phase:
  • validate 验证项目是否正确以及必须的信息是否可用。
  • compile 编译源码;
  • test 測试编译后的代码,即运行单元測试代码;
  • package 打包编译后的代码。在target文件夹下生成package文件;
  • integration-test 处理package以便须要时能够部署到集成測试环境;
  • verify 检验package是否有效而且达到质量标准;
  • install 安装package到本地仓库,方便本地其他项目使用;
  • deploy 部署,拷贝终于的package到远程仓库和替他开发这或项目共享,在集成或公布环境完毕。

以上的phase是有序 的(注意实际两个相邻phase之间还有其它phase被省略。完整phase见lifecycle),以下一个phase的运行必须在上一个phase完毕后


http://chatgpt.dhexx.cn/article/b5PAjD1C.shtml

相关文章

Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像

创建Dockerfile文件 此处的参数说明: FROM openjdk:8-jdk-alpine 基与jdk1.8 VOLUME /tmp 挂载容器的位置 ADD kitty-generator-1.0.0.jar app.jar 宿主机器的jar文件 移动到 容器的jar文件 ENTRYPOINT ["java","-Djava.security.egdfile:/dev/./urandom&…

Maven介绍,作用、核心概念、用法、常用命令、扩展及配置

由浅入深&#xff0c;主要介绍maven的用途、核心概念(Pom、Repositories、Artifact、Build Lifecycle、Goal)、用法&#xff08;Archetype意义及创建各种项目&#xff09;、maven常用参数和命令以及简单故障排除、maven扩展&#xff08;eclipse、cobertura、findbugs、插件开发…

【+】Maven介绍:包括作用、核心概念、用法、常用命令、扩展及配置

来源&#xff1a;http://www.trinea.cn/android/maven/ 两年半前写的关于Maven的介绍&#xff0c;现在看来都还是不错的&#xff0c;自己转下。写博客的一大好处就是方便自己以后查阅&#xff0c;自己总结的总是最靠谱的。 由浅入深&#xff0c;主要介绍maven的用途、核心概念(…

git、mvn实用(1):git常用命令

开发常用命令&#xff1a; a、切换到要开放的远端分支&#xff0c;根据当前分支&#xff0c;新建一个本地分支xxl-branch&#xff1a;git checkout -b xxl-branch b、将本地分支作为远程分支xxl-branch&#xff0c;分支提交到远程仓库也可以用这个命令&#xff08;如果报错&a…

『网络迷踪』ctfshow-网络迷踪(部分)

文章目录 前言搜图引擎通过投影定位工具 新手上路初学乍练解法一解法二 初学又练初学再练[未解出]现拉现吃初窥门径狗哥去哪国足加油解法一解法二解法三 致我超吧山外有山密集恐惧哐啷哐啷鲇鱼之谜这里有轨爆破不了目之所及[未解出]窗外风景[未解出]来点福利你的名字噶即正义完…

ctfshow七夕杯2022

文章目录 Webweb签到easy_calceasy_cmd Crypto密码签到 Misc杂项签到 Osint社工签到迷失的大象大飞机 原文 Web web签到 固定长度RCE&#xff0c;限定7位数字&#xff0c;直接给出exp # -*- coding: utf-8 -*- # Time : 2022/8/4 22:03 # Author : pysnow # !/usr/bin/pytho…

ctfshow 网络迷踪做题记录(1)

ctfshow 网络迷踪做题记录&#xff08;1&#xff09; —— 新手上路 找桥的名字。 附件为一张海边图片。 百度识图为蜈支洲岛&#xff0c;得到地点名&#xff0c;但还需要具体桥的名字。 再用搜索引擎搜索关键字&#xff0c;就可以看到结果中的“情人桥”。 —— —— …

ctfshow 网络迷踪 all 笔记(同步更新)

不小心拿了一点一血阿巴阿巴q大概看一下莫 提供下思路就好 手机写太麻烦了 有的题懒得放图片跟flag 仅提供思路&#xff1a;p 文章目录 1.新手上路2.初学乍练3.初学又练4.初学再练5. 现拉现吃6.初窥门径7.狗哥去哪8.国足加油9.致我超吧10.山外有山11.密集恐惧12.哐啷哐啷13、鲶…

ctfshow--网络迷踪

前言 记录一下做题过程。 如有不当之处&#xff0c;还望指正。 如有疑问&#xff0c;欢迎留言。 目录 前言1. 新手上路2. 初学乍练3. 初学又练4. 初学再练5. 现拉现吃6. 初窥门径7. 狗哥去哪8. 国足加油9. 致我超吧10. 山外有山11. 密集恐惧12. 哐啷哐啷13. 鲶鱼之谜14. 这里有…

NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing...

~~因为不太会使用opencv、matlab工具&#xff0c;所以在找一些比较简单的工具。 . 一、NLP标注工具 来源&#xff1a;《构想&#xff1a;中文文本标注工具&#xff08;附开源文本标注工具列表&#xff09;》 Chinese-Annotator 来源&#xff1a;https://github.com/crownpku/…

Python图像处理,cv2模块,OpenCV实现检索图片

前言 利用Python实现OpenCV实现检索图片。废话不多说。 让我们愉快地开始吧~ 开发工具 Python版本&#xff1a; 3.6.4 相关模块&#xff1a; cv2模块&#xff1b; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即…

搜狗搜索事业部总经理:从识图搜索谈未来大势

经过近半年的独立研发&#xff0c;搜狗搜索推出了识图搜索功能&#xff0c;即可通过上传图片等方式搜索找到相似群组图片和资料。日前&#xff0c;就这一新功能以及搜索领域热点话题&#xff0c;CSDN记者专访了搜狗公司搜索事业部总经理茹立云。 搜狗公司搜索事业部总经理茹立云…

计算机视觉是否已经进入瓶颈期?

作者&#xff1a;周博磊 链接&#xff1a;https://www.zhihu.com/question/51863955/answer/127888709 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 其实这个问题也是我近段时间一直在思考的问题. 昨天刚在组里做…

淘宝/天猫API:img2text-图片识别商品接口

万邦淘宝/天猫图片识别商品接口 API 返回值说明 img2text-图片识别商品接口 onebound.taobao.img2text 公共参数 请求地址: https://console.open.onebound.cn/console/?ipony 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secret…

怎样找一张图片的原图、出处?最全搜图网站+具体案例分享

前不久随手帮一网友找了张图&#xff0c;想了想中间的经历挺有意思&#xff0c;所以今天打算来说说以图搜图这个话题 第一部分&#xff0c;先介绍常用的识图引擎第二部分&#xff0c;想分享一下阿虚自己的搜图经验&#xff0c;也是今天主要想分享的。 ▍1 首先推荐几个识图引…

【码云周刊第 28 期】计算机视觉时代的识图技术

为什么80%的码农都做不了架构师&#xff1f;>>> Venture Scanner 追踪了全球957家人工智能公司&#xff0c;总融资额为48亿美金。其中&#xff0c;机器学习、自然语言处理、计算机视觉等认知技术占据当前市场主导地位。计算机视觉作为一种人工智能的基础技术应用&a…

生信识图之 点图进阶-4 (PCA下篇)

各位亲爱的土豪富婆&#xff0c;承蒙您慧眼识珠大驾光临大Y老师为您准备的小灶课堂。 近期有朋友说发现有人抄袭咱们的文章&#xff0c;自标为“原创”。对此大Y老师有心理准备&#xff0c;咱们的每一篇文章都是大Y老师仔细思考后字斟句酌写下来的&#xff0c;好内容被抄袭已经…

用html和css做搜狗网页,搜狗识图的十大用法,你用过几种

搜狗识图的十大用法&#xff0c;你用过几种 CSS布局HTML小编今天和大家分享美 哪种输入法新功能 识图出文字搜狗输入法就可以。 点击输入框弹出搜狗键盘&#xff0c;进入搜狗工具栏的小键盘图标&#xff0c;进入加号添加文字扫描。 识图软件有百度识图、搜狗识图、TinEye、360识…

Chrome扩展 - 百度识图

我经常搜集些小图片&#xff0c;网上的图片往往都有水印&#xff08;特别是现在微博发的图片&#xff0c;几乎右下角都有水印&#xff09;或者比较小&#xff0c;经常会有想找图片原始的版本的冲动。 最近我才发现原来百度有个识图搜索&#xff0c;可以搜索出相似的图片&#x…

华为MIB关键字IOD查询地址及方法

官方地址 https://support.huawei.com/onlinetoolweb/infoM/index.do?langzh&domain1 输入设备型号 版本 display version #输入命令查询版本 启动时间查询 snmpwalk -v 3 -u 安全用户名 -a SHA -A 认证密码 -x AES -X 加密密码 -l authPriv 设备地址 1.3.6.1.4.1.2011.…