maven

https://blog.csdn.net/shuzhe66/article/details/45009175  小白查看资料

https://blog.csdn.net/qicui2835/article/details/80766360   什么是maven及其优点

https://blog.csdn.net/liusong0605/article/details/25654811   maven和私服nexus之间的关系

maven简介

Maven是Java平台下的一款项目构建和依赖管理的自动化管理工具。

项目构建:将我们的源代码、配置文件变成可执行的war包或者jar包。

依赖管理:项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理。

maven的优点,来源于

1、原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借助Maven,可以将jar包仅

     仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。

2、原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地

     仓库中找,找不到就在网上进行下载。

3、原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而Maven会自动将被依赖的jar包导进来。

4、原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。
 

5、项目非常大时,可借助Maven将一个项目拆分成多个工程,最好是一个模块对应一个工程,利于分工协作。而且模块之间还是可以发送消息的。  (该条来源于https://blog.csdn.net/sword_anyone/article/details/70571550

 

相关版本查看方法:

 mvn   -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /app/maven/apache-maven-3.5.0
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /app/java/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
git --version
go version

node -v
v6.10.2
npm  -v
3.10.10

 

maven和nexus之间的关系:

这个问题从Maven的第二个用处说起,依赖管理,通过在Pom中指定坐标的形式将jar引入到项目中。那这个过程,要经历怎样一个流程呢?从哪里寻找jar?下载的jar放到哪里?

将这个问题顺下来,就知道nexus和maven的关系了。

从哪里找到jar?项目用到的jar又存放在哪里?这引出了仓库的概念,maven通过仓库来统一管理各种构件。Maven的仓库分为本地仓库和远程仓库。

当Maven根据坐标寻找构件时,它首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,或者需要查看是否有更新的构件版本,Maven会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。

到了这里,问题的答案也就出来了。

首先,Nexus是一种远程仓库,根据上段的介绍,我们已经知道远程仓库的作用。在远程仓库中,默认的是中央仓库,中央仓库是Maven核心自带的远程仓库。那就使用中央仓库不就得了吗,为什么我们要安装Nexus呢?

我们从项目实际开发来看:

1.一些无法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其他依赖项目使用。

2. 为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的负荷。

Nexus仅仅是私服的一种。

 

 

mvn compile与mvn install、mvn deploy的区别

  1. mvn compile,编译类文件
  2. mvn install,包含mvn compile,mvn package,然后上传到本地仓库
  3. mvn deploy,包含mvn install,然后,上传到私服

mvn的常用命令

1

2

3

4

5

1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。

2、mvn test 测试,并生成测试报告

3、mvn clean 将以前编译得到的旧的 class 字节码文件删除

4、mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。

5、mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用

 

 

maven  Q&A

一: maven里上传缺失的lib包的操作方法是什么?

构建日志报错信息如下:

[INFO] Building hps-agent 1.0-SNAPSHOT

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

[WARNING] The POM for org.hyperic:sigar:jar:1.6.4 is missing, no dependency information available

[ERROR] Failed to execute goal on project hps-agent: Could not resolve dependencies for project com.ai.bdx.hpsai:hps-agent:jar:1.0-SNAPSHOT: Failure to find org.hyperic:sigar:jar:1.6.4 in http://10.1.235.73:18081/nexus/content/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

整个操作流程的步骤如下共3步

a:把缺失的lib包,下载到本地,上传到对应的制品库(10.1.245.19上的包:/root/.m2/repository/org/hyperic/sigar/1.6.4/sigar-1.6.4.jar)

b:登录制品库http://ip:port/artifactory/webapp/#/artifacts/browse/tree/General  

选择左侧第二个菜单:artifact菜单,在左侧列表菜单的第4个:Global-Maven-Libs-Local,点右上角deploy,选择仓库,选择包,填写:groupId、artifactID,version、type、按照实际情况(和pom.xml文件中记录的保持一致)写;对org.hyperic:sigar:jar:1.6.4

groupId就是org.hyperic

artifactI:sigar

version:1.6.4

type:jar;

或者上传时,直接把文件拖拽到上传框中,几个输入参数自动输入;(注意自动输入的参数不一定正确,一定要和pom.xml文件中的对比下)

c:maven在下载包上,如果下载不到,会在本地仓库中会生成垃圾文件,登录server上,把本地的私库中的信息删除掉;

然后把40:/root/.m2/repository/org/hyperic/sigar/下的1.6.4版本包删除,重新获取;

 

让maven对接新仓库的方法:

只更改下面的配置文件

/var/opt/jenkins/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven_3.3.9_plugin/conf/settings.xml

文件中的activeProfile是之处活跃的仓库;

此外对于artifactory仓库,是不需要properties的;删除properties配置;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值