当前位置: 首页 > news >正文

Maven详细笔记

初识Maven

翻译为“专家”,“内行”(在这指项目构建专家)

Maven是Apache基金会下一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理

跨平台:可以再Windows、Linux、Mac os等系统上运行

Maven的最大作用就是构建项目。

什么是构建

Maven的作用

1.创建项目——创建的项目具有统一的项目结构

2.引入依赖的jar文件——jar包会存放在仓库中

3.打包发布项目——可以将项目打包成开发人员指定的类型,用于部署到Web容器。还可以将项目打包到仓库中,方便项目的相互依赖。

Maven模型

 

1.项目对象模型(Project Object Model):通过 pom.xml 描述项目基本信息,并加载项目 

2.依赖管理模型(Dependency):管理jar包以及jar包之间的依赖,需要什么jar包只要在pom.xml文件中配置就可以,Maven会自动下载到本地jar包仓库中(从central(中央仓库)、b2b(私服仓库)、local(本地仓库)仓库中下载)

3.Build lifecycle  phases:Maven 构建项目的整个生命周期过程是由一个一个插件完成的。每个插件完成一个特殊的功能,并产出一些文件。

Maven的运行依赖于生命周期中的每一个阶段,每一个阶段都对应一个或多个插件,每个插件执行一个功能。

Maven的仓库

 

本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

远程仓库——Nexus私服

私服也属于远程仓库的一种,只是这个远程仓库的地址是本地服务器而已

配置在局域网环境中,为局域网中所有开发人员提供jar包的统一管理

本地仓库(本机)--->私服(局域网)--->中心仓库(外部网络)

远程仓库——其他公共库

一些知名公司将收集的依赖构建而成的仓库,并将仓库地址发布到网络中提供其他用户使用。比如阿里巴巴的公共库

远程仓库——中央仓库

由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令时下载到需要的构件。中央仓库就是一个默认的远程仓库。Maven的安装文件默认带了中央仓库的配置

maven自己的中央库访问速度很慢

公司开发的自己的jar包等其他代码源,不想公开分享,就只有放到私有服务器上存放

有的jar包或者代码源中央库没有的,或者使用得老版本中央库没有的,我们需要私有服务器存放这些数据,用到的时候下载的速度也会很快

在Maven项目中都包含一个pom.xml文件,在该文件中通过配置依赖的坐标,Maven项目就会去仓库中查找并引入所需要的依赖。

库优先级:本地→私服→其他公共仓库→中央仓库

 

Maven的安装(Windows) 

1.确认jdk是否已安装?(maven3.3以上的版本要求JDK最低为1.7)

echo %JAVA_HOME%

java -version

javac

2.下载maven网址:Maven – Download Apache Maven    

3.对下载的apache-maven-3.6.1-bin.zip进行解压,解压到硬盘目录(解压目录最好不要有中文字)即可完成maven的安装

4.配置环境变量

MAVEN_HOME------->其值为maven安装的路径

path------->其值为maven安装的路径\bin

 

5.在dos窗口中运行命令mvn -v或mvn -version,显示如图所示的内容证明安装成功了。 

 

Maven安装目录分析 

bin:含有mvn运行的脚本(二进制可运行指令)

boot:含有plexus-classworlds类加载器框架(java语言在加载的时候有一个类加载器,Maven有自己的专用的类加载器,jdk类加载器将Maven类加载,Maven再启动自己的类加载器加载其它Maven类)

conf:含有settings.xml配置文件

lib:含有Maven运行时所需要的java类库(Maven本身是用Java写的,它的运行需要一些资源jar包)

LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

 Maven的配置

Maven的主要功能之一是管理构建项目所需要的jar文件,那么从哪里下载,下载到哪里就成为必须要解决的问题,Maven使用settings.xml指定这些配置信息。

默认仓库——当前用户路径C:\Users\[UserName]\.m2

全局范围:Maven安装目录,如:D:\ruanjian\apache-maven-3.6.1\conf\settings.xml,对所有用户均有效。

修改默认仓库的位置<localRepository>本地仓库的位置</localRepository>

用户范围:当前用户目录,如D:\ruanjian\maven\settings.xml,仅对当前用户生效。

两个目录都可以出现settings.xml,最后取合并后的结果,如果存在重复定义,那么当前用户目录的配置项优先生效。通常是把全局范围内的settings.xml作为模板复制到用户范围目录中。

settings.xml使用仓库来管理jar文件的下载,分为本地仓库远程仓库,分别使用下面的两个节点配置:

https://blog.csdn.net/qidasheng2012/article/details/78152581

注意:用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用默认路径仓库

 在IDEA中配置Maven

在IDEA中构建Maven项目

1.创建maven项目

 

2.设置项目的maven坐标

 

3.设置maven项目的属性

 

 

Maven项目的标准目录结构

src/main/java —— 存放项目的.java文件

src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件

src/main/webapp—— Web项目根目录

src/test/java —— 存放所有测试.java文件,如JUnit测试类

src/test/resources —— 测试资源文件

target —— 项目编译构建的输出位置(可以自动生成)

pom.xml——maven项目核心配置文件

案例:

详见第1个Maven项目.txt

一个项目依赖另一个项目 

详见第2个Maven项目.txt(依赖1)

详见第3个Maven项目.txt(依赖1、2)

第一次执行maven命令时,会自动下载相应的maven插件,插件会被下载到maven仓库中

仓库位置:仓库路径\repository\org\apache\maven

断网后下载失败,再次连接无法下载的解决方案。

删掉仓库中对应资源文件夹下的xxx.pom.lastUpdated文件后,修复网络重新下载

POM文件 

Maven核心概念
坐标、依赖管理、仓库管理、生命周期、插件和目标、聚合继承

Maven坐标

什么是坐标?

在平面几何中坐标(x,y)可以标识平面中唯一的一点

Maven坐标主要组成

<groupId>:项目组织的唯一标识,通常由域名倒写,如com.company,对应Java包的结构

<artifactId>:项目唯一标识,对应项目名称

<version>:定义当前项目的当前版本,如1.0.0-SNAPSHOT、1.0.0-RELEASE,1.0.0表示版本号,SNAPSHOT表示快照版,RELEASE表示发行版

<packaging>:项目的打包方式,一般为 jar 或者 war(默认值是jar,代表Maven会将项目打成一个jar包)

Maven为什么使用坐标?

Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范

拥有了统一规范,就可以把查找工作交给机器

http://mvnrepository.com/ 

pom文件中的其他标签

<project>:POM文件的顶级元素

<modelVersion>:POM模型版本,描述这个POM文件是遵循哪个POM版本

<parent>:表示父依赖,类似Java中的继承,当前项目可继承父依赖中配置的依赖和属性

需要指定父依赖的groupId、artifactId、version和relativePath(relativePath父项目的pom.xml文件的相对路径)

<name>:项目的名称,在Maven生成的文档中使用

<url>:项目主页的URL,在Maven生成的文档中使用

<description>:项目的描述,在Maven生成的文档中使用

<dependencies>:定义此项目的依赖关系集,在子节点dependency中添加具体的依赖

<dependency>:dependencies的子节点,定义引入某个依赖。

详细见 dependency标签_疙瘩陈的博客-CSDN博客_dependency标签   


<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.3.2</version>
    <!--maven认为,程序对外部的依赖随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域scope限制。
    scope包含如下的取值:compile编译范围、provided已提供范围、runtime运行时范围、test测试范围、system系统范围-->
    <scope>compile</scope>
    <!--当scope为system:表示此依赖是来自外部jar,而不是maven仓库。当scope设置为此值时,systemPath属性才会生效。systemPath为一个物理文件路径,来指定依赖的jar其物理磁盘的位置-->
    <systemPath>./commons-lang3.jar</systemPath>
    <!--设置依赖是否可选,默认为false,即子项目默认都继承;若为true,则子项目必须显示的引入-->
    <optional>false</optional>
    <!--屏蔽依赖关系。比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽对1.0版的依赖-->
    <exclusions>
        <exclusion>
            <artifactId>aopalliance</artifactId>
            <groupId>aopalliance</groupId>
        </exclusion>
    </exclusions>
</dependency>


<properties>:定义一些常量,可在pom文件的其他地方引用

<properties>

    <!--定义了file.encoding,在pom中的其他地方可以通过${file.encoding}进行引用-->

    <file.encoding>UTF-8</file.encoding>

  </properties>

<build>:构建选项,描述如何编译和打包项目,具体工作通过build标签下中的plugin完成。plugin不是必须的。


<build>  

    <finalName>mavenmodule</finalName>  

    <pluginManagement>  

        <plugins>  

            <plugin>  

              <artifactId>maven-compiler-plugin</artifactId>  

              <version>3.1.0</version>  

            </plugin>  

        </plugins>  

    </pluginManagement>  

</build>  

 

Maven生命周期

何为生命周期?

生命周期是指一个事物从创建到消亡的整体过程

Maven生命周期指Maven整体的构建过程

生命周期Maven有三套相互独立的生命周期: 

Clean Lifecycle 在进行真正的构建之前进行一些清理工作 

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等。 

Site Lifecycle 生成项目报告,站点,发布站点 

再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

Maven Core – Lifecycles Reference

IDEA中的常用Maven操作 

首先需要在idea中对maven进行集成,目录为File---->Setting---->Build、Execution、Deployment---->Build Tools---->maven,

集成了Maven之后,也集成了对maven命令的图形化操作。再idea中通过菜单View->Tool Windows->Maven,打开Maven操作的界面:

在IDEA中开启热部署

修改代码后,不需要重启项目,就可以更新部署

IDEA默认没有开启热部署,开启步骤如下

1.使用组合键 Ctrl+shift+alt+/ 打开Maintenance窗口,选择“1.Registry…”

2.勾选 compiler.automake.allow.when.app.running

 

3.在pom.xml中添加依赖

 <dependency>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-devtools</artifactId>

      <optional>true</optional>

    </dependency>

 4.在pom.xml中配置plugin

  <plugins>

        <plugin>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-maven-plugin</artifactId>

          <configuration>

            <fork>true</fork>

          </configuration>

          <dependencies>

            <dependency>

              <groupId>org.springframework</groupId>

              <artifactId>springloaded</artifactId>

              <version>1.2.5.RELEASE</version>

            </dependency>

          </dependencies>

        </plugin>

      </plugins>

5.在idea中,单击File--->Setting,在打开的窗口中单击“Build、Execution、Deployment”--->compiler,在弹出的窗口中勾选“build project automatically”选项。

在IDEA中使用maven创建ssm框架项目

(将之前的写好的ssm学生项目改造为maven项目) 

1.创建maven-web项目

2.创建目录结构

src/main/java 指定为Sources Root

src/main/resources 指定为Resources Root

3.配置pom.xml,引入ssm框架需要的jar包+mysql驱动jar+jstl/el+数据校验+log4j+junit等等jar包


<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven.compiler.source>1.7</maven.compiler.source>

    <maven.compiler.target>1.7</maven.compiler.target>

    <spring.version>5.2.2.RELEASE</spring.version>

  </properties>

  <dependencies>

    <!-- Spring相关包 -->

    <dependency>

      <groupId>org.springframework</groupId>

     <artifactId>spring-core</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-aop</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-web</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-webmvc</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-jdbc</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-tx</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <!-- AOP相关包 -->

    <dependency>

      <groupId>aopalliance</groupId>

      <artifactId>aopalliance</artifactId>

      <version>1.0</version>

    </dependency>

    <dependency>

      <groupId>org.aspectj</groupId>

      <artifactId>aspectjweaver</artifactId>

      <version>1.6.9</version>

    </dependency>

    <!-- MyBatis相关包 -->

    <dependency>

      <groupId>org.mybatis</groupId>

      <artifactId>mybatis</artifactId>

     <version>3.5.1</version>

    </dependency>

    <!-- MySQL相关包 -->

    <dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>8.0.19</version>

    </dependency>

    <!-- 数据库连接池 -->

    <dependency>

     <groupId>commons-dbcp</groupId>

      <artifactId>commons-dbcp</artifactId>

      <version>1.4</version>

    </dependency>

    <!-- Spring集成MyBatis -->

    <dependency>

      <groupId>org.mybatis</groupId>

      <artifactId>mybatis-spring</artifactId>

      <version>2.0.3</version>

    </dependency>

    <!-- JSP标准标签库 -->

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>jstl</artifactId>

      <version>1.2</version>

    </dependency>

    <dependency>

      <groupId>taglibs</groupId>

      <artifactId>standard</artifactId>

      <version>1.1.2</version>

    </dependency>

    <!-- 日志相关包 -->

    <dependency>

      <groupId>log4j</groupId>

      <artifactId>log4j</artifactId>

      <version>1.2.17</version>

    </dependency>

    <!-- 单元测试相关包 -->

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.12</version>

      <scope>test</scope>

    </dependency>

    <!--JSON-->

    <dependency>

      <groupId>com.alibaba</groupId>

      <artifactId>fastjson</artifactId>

      <version>1.2.13</version>

    </dependency>

    <!--数据校验-->

    <dependency>

      <groupId>org.hibernate</groupId>

      <artifactId>hibernate-validator</artifactId>

      <version>5.1.0.Final</version>

    </dependency>

    <dependency>

      <groupId>javax.el</groupId>

      <artifactId>javax.el-api</artifactId>

     <version>3.0.0</version>

    </dependency>

    <!--文件上传-->

    <dependency>

      <groupId>commons-fileupload</groupId>

      <artifactId>commons-fileupload</artifactId>

      <version>1.2.2</version>

    </dependency>

    <dependency>

      <groupId>commons-io</groupId>

      <artifactId>commons-io</artifactId>

      <version>2.4</version>

    </dependency>

    <!--Servlet-->

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>javax.servlet-api</artifactId>

      <version>3.1.0</version>

      <scope>provided</scope>

    </dependency>

  </dependencies>


4.将学生项目中xml的内容复制到web.xml中,注意这里面的节点有顺序要求


<!--(icon?, display-name?, description?, distributable?,

context-param*, filter*, filter-mapping*, listener*, servlet*,

servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,

error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,

login-config?, security-role*, env-entry*, ejb-ref*,  ejb-local-ref*)-->

<web-app>

  <display-name>Archetype Created Web Application</display-name>

  <!--配置环境参数,指定Spring配置文件所在目录-->

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:ApplicationContext-*.xml</param-value>

  </context-param>

  <!--解决post乱码问题 Spring 字符编码的配置,处理中文乱码-->

  <filter>

    <filter-name>encodingFilter</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>

      <param-name>encoding</param-name>

      <param-value>UTF-8</param-value>

    </init-param>

    <init-param>

      <param-name>forceEncoding</param-name>

      <param-value>true</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>encodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

  <!--初始化Spring容器的ContextLoaderListener监听器-->

  <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

  <!--核心控制器的配置-->

  <servlet>

    <servlet-name>springmvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


    <!--初始化参数配置-->

    <init-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:springmvc-servlet.xml</param-value>

    </init-param>

  </servlet>

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>/</url-pattern>

  </servlet-mapping>

  <!--配置欢迎页面-->

  <welcome-file-list>

    <welcome-file></welcome-file>

  </welcome-file-list>

</web-app>

5.将学生项目中src下的包及java代码还有映射文件一并赋值到现在的src/main/java下

这里需要注意mapper的映射文件由于在src下,是无法加载到的,可以在pom.xml中配置

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->

    <resources>

      <resource>

        <directory>src/main/java</directory>

        <includes>

          <include>**/*.properties</include>

          <include>**/*.xml</include>

        </includes>

        <filtering>false</filtering>

      </resource>

      <resource>

        <directory>src/main/resources</directory>

        <includes>

          <include>**/*.properties</include>

          <include>**/*.xml</include>

        </includes>

        <filtering>false</filtering>

      </resource>

    </resources>

6.将学生项目中的配置文件复制到src/main/resources下

7.根据配置文件中指定的静态文件路径,在webapp下创建对应的文件夹用于存放静态文件,这里我配置的是statics

8.将学生项目中的页面复制到WEB-INF下

这里需要注意如果页面无法识别el表达式,可以设置page指令,开启

<%@ page isELIgnored="false"%>

初识maven私服Nexus

为何需要私服

实际开发中,通过中央仓库获取构件往往存在各种问题

网速慢,下载时间长,效率低

多人重复下载,浪费带宽,且版本可能不一致

不利于公共构件的管理和维护

第三方构件未在中央仓库发布,或更新不及时

搭建Maven私服

局域网内下载速度优于远程仓库,节约带宽

版本统一

可自行进行构件的管理和维护(项目模块所依赖的公共构件、第三方构件)

 

常见Maven私服

Apache Archiva

Artifactory

Sonatype Nexus

强大的Maven仓库管理器

使用文件系统 + Lucene来组织数据 

bundle版安装包内嵌Jetty容器

Nexus专业版是需要付费的,这里我们下载开源的Nexus OSS

一、Nexus的下载和安装 

1.首先确定我们的环境安装好maven,jdk等必须的环境;jdk:要1.6版本以上。

echo %JAVA_HOME%

java -version

echo %MAVEN_HOME%

mvn -version

2.这些都准备好之后,下载nexus ,下载地址:http://www.sonatype.org/nexus/go 

3.打开目录nexus-2.x.x-xx-bundle\nexus-x.x.x-xx\bin\jsw 这个目录下面你会发现有很多系统版本的nexus环境,根据个人的电脑系统选择对应的版本:例如win7 (64)位的系统,选择windows-x86-64这个版本

4.打开一个版本你会看到如下文件:

 console-nexus.bat:启动nexus服务器,命令行窗口,关闭后,不会驻留在windows服务中

install-nexus.bat:将nexus安装成为windows服务

start-nexus.bat:启动服务

stop-nexus.bat:停止服务

uninstall-nexus.bat:卸载nexus在windows中的服务

5.启动服务,访问http://localhost:8081/nexus/ 启动后如下页面,在右上角有个Log in 的超链接,点击登录

默认的用户名是 admin 密码是 admin123

私服默认的端口号为8081;如何修改端口号? 

找到你的nexus的所在目录,打开nexus根目录下的conf文件夹下的配置文件nexus.properties,打开文件找到大约第19行application-port=8081;修改为自己所需要的端口号即可

6.登录之后,可以点右上角的“admin -> Profile”可修改登录密码

7.私服的仓库说明

点击左侧Views/Repositories 中Repositories

 

Repository——Nexus内置仓库说明:

 1) Public Repositories:该仓库组将上述某些仓库聚合(可在仓库的Configuration中配置)并通过一致的地址提供服务

2) 3rd party:用来部署无法从公共仓库获得的第三方发布版本的jar包

3) Apache Snapshots:用来代理Apache Maven仓库的快照版本jar包

4) Central:该仓库代理Maven中央仓库,其策略为Release,因此只会下载和缓存中央仓库中的发布版本jar包

5) Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的组件镜像仓库

6) Releases:用户部署组织内部的发布版本的jar包

7) Snapshots:用来部署组织内部的快照版本的jar包

Type——仓库类型说明:

1) group:仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组

2) hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。 包括3rd party仓库,Releases仓库,Snapshots仓库

3) Proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库

4) virtual:虚拟仓库

Format——2中仓库格式:maven1、maven2

Policy——2中仓库版本策略:

snapshot:快照版本,相对不稳定

release:发行版本,即稳定版本

Repository Path——仓库访问地址 

8.设置下载远程索引到本地

 

9.然后在Central仓库上右键然后点击Repair Index 即可下载中心仓库的索引文件,稍等几分钟点击下边的Browse Index即可看见下载的索引文件。

 

一般远程仓库比较大,构件较多,索引文件会很大;由于因特网宽带的限制,我们不推荐在线方式,强烈推荐使用本地方式。

下载索引相关文件及索引构建工具

从 Central Repository: .index 下载索引相关文件

 nexus-maven-repository-index.gz 

nexus-maven-repository-index.properties 

从 Central Repository: org/apache/maven/indexer/indexer-cli/5.1.0 下载Maven索引构建工具indexer-cli-5.1.0.jar

停止Nexus服务;使用索引构建工具解压索引文件,将下载的三个文件放置在同一目录下

 

 执行命令:java -jar indexer-cli-5.1.0.jar -u nexus-maven-repository-index.gz -d indexer

 

清空D:\ruanjian\nexus-2.14.1-01-bundle\sonatype-work\nexus\indexer\central-ctx中的文件,

将解压生成的indexer目录中的索引文件全部移动到索引目录D:\ruanjian\nexus-2.14.1-01-bundle\sonatype-work\nexus\indexer\central-ctx中。

10.这样设置以后,重新启动Nexus,访问Nexus管理页面,在Browse Index选项卡点击刷新按钮即可显示更新后的索引

 

可以在左边菜单栏里面找到Artifact Search,在输入框里面输入你想要搜索的组件名字,比如:hibernate, 那么查询结果如下:

 

11.点击其中一个版本的信息,可以查看pom信息

  

二、配置从私服下载资源

1.在本地仓库的settings.xml文件中配置,在<mirrors>中添加

 

配置的是组 ,当前的组中有

<mirrors>   

   <mirror>

       <!--此处配置所有的构建均从私有仓库中下载 *代表所有 -->

       <id>nexus</id>

       <mirrorOf>*</mirrorOf>

       <url>http://localhost:8081/nexus/content/groups/public</url>

     </mirror>

</mirrors>

2.修改项目pom文件,设置下载仓库(repository),代码如下:在</dependencies>标签下添加

 <repositories>

    <repository>

      <id>public</id>

      <name>Team Maven Repository</name>

      <url>http://localhost:8081/nexus/content/groups/public</url>

      <releases>

        <enabled>true</enabled><!--是否支持更新-->

      </releases>

      <snapshots>

        <enabled>true</enabled>

      </snapshots>

    </repository>

  </repositories>

 3.这时就可以使用在项目中私服下载所需资源了,查找私服dependency配置信息,从私服上搜索自己想要的jar包,然后将依赖拷贝到 pom.xml中,项目会自动更新;但是由于私服中的访问的远程仓库是中央仓库,访问下载时间较长,所以建议在私服上添加阿里代理仓库

3.1输入名称和地址

 

3.2保存完毕后可能出现这种情况    in service - Remote Automatically Blocked and Unavailable(远程自动阻止和不可用) 

 

 3.3修改方法是:把Auto Blocking Enabled   修改为 false

3.4修改后的样子

 

3.5把新添加的仓库 添加到组仓库并调整位置 

 

 

3.6这样通过私服下载 jar时 阿里镜像仓库会优先中央仓库下载,提高速度。

演示:

将mysql8.0.20版本的信息dependency复制到pom文件

 

这时下载该版本的jar文件的路径为私服路径,切记要联网(之后再下载同版本的jar就不需要联网了)

 

三、配置将资源发布到私服 

1.在项目的pom.xml中配置发布目的地,在</dependencies>标签下添加

 <distributionManagement>

        <repository>

            <id>releases</id>

            <url>http://localhost:8081/nexus/content/repositories/releases/</url>

        </repository>

        <snapshotRepository>

            <id>snapshots</id>

            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>

        </snapshotRepository>

    </distributionManagement>

 2.在本地仓库的settings.xml文件中配置发布权限,在<servers>中添加

 <server>

      <id>releases</id>

      <username>admin</username>

      <password>admin123</password>

    </server>

    <server>

       <id>snapshots</id>

       <username>admin</username>

       <password>admin123</password>

    </server>

演示:

编写一个项目maven05_sifu,在项目中写一个方法;在IDEA中,通过maven操作中的deploy,可以上传war(maven-java就是jar)到Nexus私服仓库

这样其他的项目就可以通过引用该项目的dependency信息,使用此项目中的代码了

注意:私服一般安装在内网的其他服务器上,而不是本机上。因此上面的配置中localhost的部分在实际情况中应该修改为公司中内网的私服服务器地址。 

 手工上传第三方构件到私服3rd party仓库

1.下载oracle jdbc jar包或者安装oracle,从oracle的安装目录中找到jar包;安装目录:\oracle\product\10.2.0\db_1\jdbc\lib\jar:ojdbc14.jar

2.在Nexus中配置:

 添加后如下图所示,点击“update Artifact(s)”:

 4.配置完成后就可以引入oracle的jar包了

 

 

 

 

 

相关文章:

  • (175)FPGA门控时钟技术
  • 20天零基础自学Python | Day9 List列表用法大全
  • K8S的安装kubernetes-dashboard服务起来了,访问不到解决
  • TCP协议(全面总结)
  • 在Adult数据集上使用pandas进行独热编码,之后部署Logistic Regression模型
  • 沉睡者IT - 几种网赚项目引流的方法
  • Dubbo后台管理和监控中心部署
  • Java基于JSP+Servlet的校友论坛管理系统
  • 根据int颜色值获取带透明度的颜色
  • 金仓数据库KingbaseES客户端应用参考手册--17. vacuumdb
  • 【坑货IDEA】Spring项目运行中的问题
  • 金仓数据库KingbaseES客户端编程接口指南-ado.net(3. KingbaseES 驱动在 .NET 平台的配置)
  • tf.gather_nd
  • 软考高项——计算专题
  • 东芝发布智能栅极驱动光电耦合器,简化功率器件外围电路的设计
  • JS 中的深拷贝与浅拷贝
  • CSS实用技巧干货
  • Python连接Oracle
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 大整数乘法-表格法
  • 工作手记之html2canvas使用概述
  • 规范化安全开发 KOA 手脚架
  • 前端性能优化--懒加载和预加载
  • 中文输入法与React文本输入框的问题与解决方案
  • 白色的风信子
  • ​用户画像从0到100的构建思路
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C++17) std算法之执行策略 execution
  • (二)换源+apt-get基础配置+搜狗拼音
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)vue-router+UI组件库
  • (十六)串口UART
  • (译) 函数式 JS #1:简介
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ JavaScript ] JSON方法
  • [20150629]简单的加密连接.txt
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [CentOs7]iptables防火墙安装与设置
  • [CISCN2019 华东南赛区]Web11
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [HNOI2018]排列
  • [Java]深入剖析常见排序
  • [LeetCode] 148. Sort List 链表排序
  • [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'XXX' 无效
  • [NOIP2003 普及组] 乒乓球(模拟)
  • [Spark][Hive]Hive的命令行客户端启动: