api报错 javaee maven_JavaEE关于Maven的配置与学习

关于Maven的配置与学习

1. 简介

官方说法:Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

个人译文:Apache Maven是一款软件项目管理及综合工具。基于项目对象模型这个概念,Maven能够从一个中心信息块管理项目的构建,报告和文档。

个人对于Maven的直观感受就是工程项目被生命化了,从一个项目的初始到开发结束,它都在帮助开发者做后援工作,相当于助长剂。对于我来说主要的是项目依赖问题,不用自己去拷jar包确实是方便许多。

2. Windows下安装和配置

某些IDE已经是集成了Maven了(例如:idea),但是这里还是说一下怎么从官网下载并且配置环境变量

2.1 下载Maven

Maven官网:https://maven.apache.org/

进入官网后可以点击Download下拉可见有多个下载链接。如果不是特殊爱好/用途,下载头两个压缩包其中一个解压就可以。

2.2 配置Maven

解压后进入我的电脑(右击)->属性->高级系统设置->环境变量,进入后点击新建..,变量名为M2_HOME,变量值为自己解压后Maven的位置,我这里为C:\tool\apache-maven-3.5.0

经过上面的配置变量已经有了,但是还需要配置Windows系统变量,这样才找的到Maven的路径(在cmd模式下使用mvn命令),这里只需要将%M2_HOME%\bin;加入到Path的最前端就可以了,如下图:

通过以上的配置在cmd下键入mvn -version出来一大串信息,包括Maven路径、版本等信息就说明配置成功

2.3 配置Maven镜像和本地仓库

本地仓库会从把从别的地方的jar包下载后本地保存,相当于一个缓存,如果说不配置它默认会下载至${user.home}/.m2/repository,如果需要配置到一个特定的目录只需要进入Maven的解压目录/conf/setting.xml文件,使用编辑器打开,然后修改里面的配置C:/...../localRepository

在使用Maven管理依赖时,它可能会去别的仓库下载jar包,有可能网速会受到限制,所以使用镜像下载是一个比较好的选择,这里我使用了阿里的镜像。

在setting.xml,我们可以看到下方有这一个项,这里只需要向里面添加代码

alimaven

central

aliyun maven

http://maven.aliyun.com/nexus/content/groups/public/

3. Maven仓库

关于Maven的仓库这里可以简单的理解为存放jar包的地方,一个云盘。

但是,关于存放的位置还是有略微的区别,有远近之分,近的看来有本地仓库和私服远的有中央仓库和其他私人仓库本地仓库:通过本地存储依赖包,在项目构建需要时直接提供

私服:由个人/组织搭建,在局域网上的服务器运行,由该服务器提供依赖包

中央仓库:Maven依赖包的主要来源

其他私人仓库:需要使用的依赖包在他人服务器而不在在中央仓库没有的情况下,需要自己配置远程的仓库,它在中央仓库找不到下会去该仓库查找,其配置如下:

companyname.lib1

http://download.companyname.org/maven2/lib1

按照个人理解,画了一个图,如下:

4. Maven的生命周期

4.1 clean周期

pre-clean

执行一些清理前需要完成的工作

clean

清理上一次构建生成的文件

post-clean

执行一些清理后需要完成的工作

在每一个周期有相应的Maven命令,比如,在重新构建项目需要把前面的清除,则可以在当前项目目录下cmd模式输入mvn clean || mvn post-clean

4.2 default周期

在default周期中包含了很多个阶段,其中这里列出比较常用的

compile

编译该项目的源代码

test

运行测试使用合适的单元测试框架

package

提取编译后的代码,并在其分发格式打包,如JAR,WAR或EAR文件

install

将包安装到本地存储库,它可以用作当地其他项目的依赖

deploy

复制最终的包到远程仓库与其他开发者和项目共享

关于install,可以使用mvn install命令将我们自己的项目添加/安装到我们的本地仓库,比如,我们在多模块开发时,因为项目的依赖有些模块是完全相同的,所以我们可以建立一个父工程,让其他相关的模块继承该父工程。父工程的打包方式是pom,这里在子工程中编译项目时就会遇到父工程依赖不存在的一些错误,这时就需要使用上述的命令mvn install将我们的项目安装到本地仓库。对于Maven工程,自己写的库需要打成jar包让其他项目依赖,也可以使用该命令

4.3 site周期

siet生命周期能够生成一些网页信息(基于POM所包含的信息)

pre-site

执行一些在生成项目站点之前需要完成的工作

site

生成项目站点文档

post-site

执行一些在生成项目站点之后需要完成的工作

site-deploy

将生成的项目站点发布到服务器上

当我使用之前博客上的Spring Boot会员系统测试site命令时执行了mvn site可在项目路径下看到target/site/index.html,点开后有关于该项目的各种依赖的详细信息,如下图:

在上述的周期中对应着各种Maven命令,有些命令可以同时键入,比如:mvn clean package,每个命令的执行都与Maven提供的插件有着一些密不可分的关系,这里可以看下这里的链接:

https://www.yiibai.com/maven/maven_build_life_cycle.html

https://blog.csdn.net/chaofanwei/article/details/36197183

https://www.cnblogs.com/build-up/p/4975827.html

https://www.cnblogs.com/avivaye/p/5341341.html

5. 项目开发中的Exception

这里举出两个例子,其一:

maven打包时报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test

这里可能是因为在打包时会自动执行测试命令,而Junit测试不通过导致的打包不成功,只需要添加下面的配置即可:

org.apache.maven.plugins

maven-surefire-plugin

2.4.2

true

其二:

在web项目中使用servlet和jsp时需要引入依赖来解决错误,但是在web发布时打成war包部署到tomcat就会报错,提示信息大概是类之间有冲突。这是因为tomcat已经有包含了servlet的依赖包,因此报错,这里只要在servlet和jsp的依赖中加入一个scope配置,如下:

javax.servlet

jsp-api

2.0

provided

在上面的依赖的scope中包含了几个选项,主要如下:

compile

编译(compile)时需要,测试时需要,运行时需要,打包时需要

provided

编译(compile)时需要,测试(test)时也需要   ,运行时不需要,打包时不需要

runtime

编译时不需要,测试时需要,运行时需要,打包时需要

test

编译时不需要,测试时需要,运行时不需要,打包也不需要

除了以上还有一个是system,但是个人没有怎么使用所以这里不做说明

6. 总结

关于以上的东西,个人在见解上可能还存在偏差,但是,Maven作为项目管理的一个工具,只需要把工具的主要功能发挥出来就行了。现在该要纠结的不应该是Maven存在的那些复杂的东西,而是把自己的代码写好先。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery以Post方式发送请求并获取返回的文件供下载!

用ajax请求文件下载当然是可以的,不用有返回值,代码差不多是这样: try{string FileName ".//doc//[大家网]Beginning.ASP.NET.2.0.E-Commerce.in.C#.2005.From.Novice.to.Professional[www.TopSage.com].pdf";FileName ".//…

Direct3D的一些小贴士收藏(转载)

GPU性能调试: 通常来说,使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞,甚至是Draw函数。它会在一些时间片上做一些真正的工作,而这往往是不可预知的。因此,GPU的性能调试只能用PIX或者是其…

数字图像处理同态滤波(matlab)

定义 一幅图像可看成由两部分组成,即 fi代表随空间位置不同的亮度(Illumination)分量,其特点是缓慢变化,集中在图像的低频部分。fr代表景物反射到人眼的反射(Reflectance)分量,其特…

Java并发编程-ReentrantLock源码分析

一、前言 在分析了 AbstractQueuedSynchronier 源码后,接着分析ReentrantLock源码,其实在 AbstractQueuedSynchronizer 的分析中,已经提到过ReentrantLock,ReentrantLock表示下面具体分析ReentrantLock源码。 二、ReentrantLock数…

谷歌浏览器好用的复制粘贴插件_copybetter增强复制 很好用的chrome复制粘贴插件 解除页面复制限制...

使用说明:增强复制(copybetter) 简介增强复制(copybetter)是一款国人开发的chrome浏览器复制增强扩展插件,作者参考了Copy Fixer和Autocopy两个扩展插件开发而成的。这里是他的个人网站:kodango.com。插件集成了关于复制粘贴功能的几个非常常…

绿色vmware 安装后看不到虚拟的网卡

绿色vmware 安装后看不到虚拟的网卡,按下面方法就可以添加。 1. 到Vmware 安装目录,运行 vmnetcfg,运行后出现虚拟网络编辑器 2. 转到主机虚拟适配器,单击添加 3. 转到网络连接就可以看到新增的vmware 虚拟网卡 转载于:https://www.cnblogs.c…

C语言strtok函数的用法

strtok是字符串切割函数 定义 参数一:待切割字符串参数二:分隔符集合首次调用时传递参数为: strtok(str,seps);之后再次调用时传递参数为: strtok(NULL,seps);​ 若可以切割,函数返回值为字符指针,各段切割好的字符串…

webservice接口等待时间_调用webservice超时问题的解决

1、web.config配置,里面增加:2、扩大代理类的超时限制,默认是90秒YourWebService yws new YourWebService();yws.Timeout 1200000; //20分钟3、IIS属性-网站 连接超时时间 1200秒1、修改 app.config 文件,添加如下代码&#x…

UItableViewCell滑动删除时,调整cell子视图的位置大小

UItableViewCell滑动删除时,调整cell的位置大小是否显示等。CustomTableViewCell为UITableViewCell的子类,在实现文件中重写willTransitionToState方法。willTransitionToState是在cell改变显示状态的时候调用,有三种状态:typedef…

表的转置

表的转置useSSISdroptablePTVgocreatetablePTV(TimeID nvarchar(10),ResourceID int,KPI1 numeric(38,2),KPI2 numeric(38,2),KPI3 numeric(38,2),KPI4 numeric(38,2),KPI5 numeric(38,2))goinsertintoptv values(101,1,2.78,3,5,4,4)insertintoptv values(102,2,2.7,50,95,44,…

51单片机C语言led流水灯及数码管实现秒表

51单片机C语言练习题 单片机型号 普中科技的 led练习题 led小灯闪烁 #include<reg52.h> sbit LED P0^0; void main() {unsigned int i0;while(1){LED 1;for(i0;i<60000;i);LED 0;for(i0;i<60000;i);} }led流水灯 #include<reg52.h>void main() {un…

extjs中元数据_Extjs中Store小总结

http://blog.csdn.net/without0815/article/details/77981701.什么是store&#xff1f;Store类似于一个本地仓库(即数据存储器),包括有 ArrayStore,DirectStore,GroupingStore,JsonStore,XmlStore(都是store的子类)最终主要用于提供给panel去显示.Store由Proxy(数据源)和DataRe…

内聚和耦合(自己的理解)

网上对于内聚和耦合的资料太多&#xff0c;这里结合我的感受和其他人的答案http://blog.csdn.net/zhiquan/article/details/4255161谈谈自己的理解 以下是我对内聚和耦合的理解&#xff08;例子来源于生活&#xff09;。 1.内聚&#xff1a; i.偶然内聚&#xff1a;如果一个模块…

UIButton return(textField textView)

首先设置TextField 或 TextView的 delegate /UITextView - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {if ([text isEqualToString:"\n"]) {NSLog("点击return");return NO;}retur…

(转)交换机攻击方法描述

利用交换机漏洞的攻击方法如下&#xff1a;一、生成树攻击生成树协议(STP)可以防止冗余的交换环境出现回路。要是网络有回路&#xff0c;就会变得拥塞不堪&#xff0c;从而出现广播风暴&#xff0c;引起MAC表不一致&#xff0c;最终使网络崩溃。使用STP的所有交换机都通过网桥协…

数据结构-顺序表(C语言实现)

主函数代码&#xff08;main.c&#xff09; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include "sqlist.h" int main() {sqlist *list NULL,*list_next NULL;int pos 0;int i, err, value;int arr[10] { 10,20,30,40,50,60,70,80,90,100 };i…

shell的logo含义_Shell(壳牌石油)标志历史

荷兰皇家壳牌集团(Royal Dutch Shell&#xff0c;又译蚬壳)是世界第二大石油公司&#xff0c;总部位于荷兰海牙。荷兰皇家壳牌集团由荷兰皇家石油与英国的壳牌两家公司合并组成。荷兰皇家石油于1890年创立&#xff0c;并获得荷兰女王特别授权&#xff0c;因此被命名为荷兰皇家石…

无用的设计模式之装饰者模式

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 装饰者设计模式本来是很常用的模式&#xff0c;常用到随处可见&#xff0c;jdk的bio设计都是遵循这个模式的&#xff0c;偶然的机会发现&#xff0c;貌似jdk中bio的装饰者模式和设计模式中的装饰者设计模式却有…

winform 程序制作自己的数字签名(续)

在上一篇文章《winform 程序制作自己的数字签名》中我们已经可以得到我们程序定制的数字签名了&#xff0c;但是比较讨厌的是每次编译之后&#xff0c;数字签名需要重新手动添加。 我们需要的是在程序编译时自动添加数字签名。 那实际上vs已经提供了此功能&#xff0c;具体操作…

转-HTC 手机生产日期,产地查询 以及 SN码 IMEI码 查询等问题汇总

问&#xff1a;什么是IMEI码&#xff1f;什么是SN码&#xff1f; 答&#xff1a;IMEI码&#xff0c;国际移动装备辨识码&#xff08;International Mobile Equipment Identity number&#xff0c;IMEI&#xff09;。SN码即Serial Number&#xff0c;产品序列号。 问&#xff1a…