【JavaEE学习笔记】Maven

xiaoxiao2021-02-28  32

Maven

A.概述

1.为什么使用Maven

eclipse功能已经非常强大,创建项目、编译、打包、导出、发布

这些功能eclipse都能做,但是依赖大量的手工操作,存在以下问题:

a.jar包管理混乱

在开发项目的过程中,会使用一些开源框架、第三方工具等

这些都是以jar包的方式被引用

并且有些jar包还回依赖其他的jar包

所有这些相关的jar包都会作为项目的依赖

b.版本管理混乱

在管理这些jar包过程中,jar包的版本往往是最令人头疼的问题

选择一个jar包版本,需要考虑它所依赖的jar包是否支持这个版本

并且还需要确认依赖它的jar包能不能对这个版本兼容

c.添加jar随意

需要用到第三方jar时,随便下载就添加到目录中了,没有记录

造成后期文档记录频繁

d.项目配置不统一

每个Java项目的目录结构都没有一个统一的标准

配置文件到处都是

单元测试代码到底应该放在哪里,也没有一个权威的规范

相关jar包的版本也不同意,导致后期维护困难重重

更多时候都是开发者的自由发挥

每个人有自己的风格,这并不十分适合团队协作

2.什么是Maven?

是一个项目管理工具,负责管理项目开发过程中的几乎所有东西

主要用于项目构建,依赖管理,项目信息管理

Maven为开发者提供了一套完整的构建生命周期框架

开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置

因为Maven使用了一个标准的目录结构和一个默认的构建生命周期

在有多个开发团队环境的情况下

Maven能够在很短的时间内使得每项工作都按照标准进行

因为大部分的工程配置操作都非常简单并且可复用

在创建报告、检查、构建和测试自动配置时

Maven可以让开发者的工作变得更加简单

3.Maven的功能

a.构建

比如生成class,jar,war或者ear文件

b.生成文档

比如生成javadoc,网站文档

c.生成报告

比如junit测试报告

d.生成依赖类库

生成文档,说明项目对其他软件的依赖

e.有关SCM

SCM(Software Configuration Management)

软件配置管理,比如版本控制,bug管理等

f.发布

生成供发布的分发包

比如生成struts2的分发包,提供交给用户使用

g.部署

web应用程序,自动部署到指定的服务器上

4.项目构建过程

清理项目,编译项目,测试项目,生成测试报告,打包项目,部署项目

理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的

使用maven就可以帮我们完成上述所说的构建过程

B.Maven的使用

1.步骤

a.下载maven的zip,解压到某个目录

b.配置环境变量

命令提示框输入mvn -version 正常显示maven以及jdk版本

c.配置本地仓库

拷贝maven安装目录\conf下的settings.xml文件到

C:\Users\Administrator\.m2路径

修改其中的本地仓库路径(默认为当前目录下,存放的jar包,占内存):

<localRepository>G:/mavenRepository</localRepository>

2.安装目录简介

bin:包含了mvn运行的脚本

boot:文件 plexus-classworlds-2.5.2.jar

           是一个类加载器框架,Maven使用他加载自己的类库

conf:settings.xml文件

lib:Maven运行时需要的Java类库

3.创建一个Maven项目,并编译

a.创建项目根文件夹

b.在Maven01文件夹中创建pom.xml文件,并编辑内容

pom.xml中的内容

<?xlm version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <!-- 所有的Maven项目都必须配置四个配置项 --> <modelVersion>4.0.0</modelVersion> <!-- groupId项目名的项目组,默认是包名 --> <groupId>org.xxxx.hello</groupId> <!-- artifactId是项目中的某一个模块,默认命名方式是"项目名-模块名" --> <artifactId>hello-first</artifactId> <!-- version指的是版本,这里使用的是Maven的快照版本 --> <version>SNAPSHOT-0.0.1</version> </project>

c.创建java文件夹

Maven项目规定,所有的*.java文件必须放在src目录下的main的java目录中

在Maven01项目根目录中创建一个src目录

然后在src目录中创建main目录

在main目录中创建java文件夹

d.编写java类文件

在java文件夹下创建包和类,包就是刚配置为建中的groupId

编写Hello.java文件

package org.xxxx.hello; public class Hello { public static void main(String[] args) { System.out.println("Hello Maven!"); } }

e.编译

通过命令行进入pom.xml根目录下

使用mvn  compile进行编译

首次加载,需要连接网络下载jar包到本地仓库

后面就直接从本地仓库中加载,如果没有,再连接网络下载

出现此提示,即编译成功,如果有error,根据错误信息修改

我们看一下配置的本地仓库里的内容

是常用的一些jar包,并且还有不同的版本

编译完成后,在项目根目录会生成一个target文件夹

打开target文件夹,可以看到里面有一个classes文件夹

classes文件夹存放的就是编译成功后生成的.class文件

f.清除编译结果

mvn clean

也要下载相应的资源

清除成功

g.生成可执行jar包

在pom.xml添加相应的代码,完整代码如下

<?xlm version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <!-- 所有的Maven项目都必须配置四个配置项 --> <modelVersion>4.0.0</modelVersion> <!-- groupId项目名的项目组,默认是包名 --> <groupId>org.xxxx.hello</groupId> <!-- artifactId是项目中的某一个模块,默认命名方式是"项目名-模块名" --> <artifactId>hello-first</artifactId> <!-- version指的是版本,这里使用的是Maven的快照版本 --> <version>SNAPSHOT-0.0.1</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <!-- 这里是main方法所在的全路径名 --> <mainClass>org.xxxx.hello.Hello</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>

执行mvn package

等待下载资源

执行成功,可以查看jar包

接下来用java -jar命令执行该jar包(要在jar包所在目录执行)

4.Maven的标准工程结构

a.sec/mian/java:存放项目的java文件

b.src/main/resources:存放项目的资源文件,如配置文件

c.src/test/java:存放所有的测试的java文件

d.src/test/resources:存放测试用的资源文件

e.target:项目输出位置

f.pom.xml文件

5.Maven仓库

在Maven的术语中,仓库是一个位置,例如目录

可以存储所有工程jar文件,library jar文件,插件或任何其他的工程指定文件

Maven仓库的类型

a.本地(local)

是用户机器上的一个文件夹

在第一次运行任何maven命令的时候创建的

保存工程的所有依赖(library jar,plugin jar等)

Maven会自动下载所有依赖的jar文件到本地仓库中

本地仓库默认被创建在%USER_HOME%/.m2目录下

可以通过前面介绍的方法修改本地仓库的位置

b.远程(remote)

如果Maven在中央仓库中也找不到依赖的库文件

它会停止构建过程并输出错误信息到控制台

为避免这种情况,Maven提供了远程仓库的概念

它是开发人员自己定制的仓库

包含了所需要的代码库或者其他工程中用到的jar文件

c.中央(central)

是由Maven社区提供的仓库,其中包含了大量常用库

这个仓库由Maven社区管理,不需要配置

需要通过网络才能访问,是一个特殊的远程仓库

中央仓库在lib/maven-modle-builder-3.5.2.jar配置

org\apache\maven\project\pon-4.0.0.xml文件中

定义了中央仓库的地址https://repo.maven.apache.org/maven2

6.Maven中库文件查找顺序

a.在本地仓库中搜索

如果找不到,执行步骤2,如果找到了,则执行其他操作

b.在中央仓库中搜索

如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤4

如果找到了,则下载到本地仓库中以备将来引用

c.如果远程仓库没有被设置

Maven将简单的停滞处理并抛出错误,无法找到依赖的文件

d.在一个或多个远程仓库中搜索依赖的文件

如果找到则下载到本地仓库一辈将来引用

否则Maven将停止处理并抛出错误,无法找到依赖的文件

7.坐标

Maven的世界中,拥有数量非常巨大的构件

也就是我们平时用的一些jar,war等文件

Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识

Maven坐标的元素包括group,artifactid,version,packaging,classifiner

a.groupId

定义当前Maven项目隶属的实际项目

表示方式与java包名的表示方式类似,通常与域名反向一一对应

b.artifactId

该元素定义实际项目中的一个Maven项目/模块

c.version

版本【可以分成稳定版本和快照版本】

d.packaging

打包方式,如jar,war

e.calssifier

不能直接定义,用来表示构件到底用于何种jdk版本

8.pom,依赖

a.pom

POM(Project Object Model):Maven的核心文件

位于每个工程的根目录中,指示Maven如何工作的元数据文件

类似于Ant中的build.xml文件

b.依赖(Dependency)

为了能够构建或运行,Java工程一般会依赖其它的包

在Maven中,这些被依赖的包就被称为dependency

一般是其他工程的坐标,依赖具有传递性

9.pom.xml常用节点

<!-- 声明项目POM模型版本 --> <modelVersion>4.0.0</modelVersion> <!-- 项目全球唯一标识符,通常使用全限定的包名区分该项目和其他项目 构建时生成的路径也是由此生成 --> <groupId>org.xxxx.hello</groupId> <!-- 构建模块的标识符,和groupId一起唯一标识一个构件 --> <artifactId>hello-first</artifactId> <!-- 产生的构建类型 如jar,war,ear,pom --> <packaging>jar</packaging> <!-- version指的是版本,这里使用的是Maven的快照版本 --> <version>SNAPSHOT-0.0.1</version> <!-- Maven属性配置,如版本信息,以便以后使用 --> <properties> <junit.version>2.4</junit.version> </properties> <!-- 该元素描述了项目相关的所有依赖,自动从项目定义的仓库中下载 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <type>jar</type> <!-- 依赖范围,在项目发布过程中,帮助决定哪些构件被包括进来,如 compile:默认范围,用于编译 test:用于test任务时使用 --> <scope>test</scope> </dependency> </dependencies> <!-- 该元素描述了项目构建需要的插件,自动从项目定义的插件仓库中下载 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <soure>1.8</soure> <target>1.8</target> </configuration> </plugin> </plugins> </build>

10.Maven常用命令

a.编译源代码:mvn compile

b.清除产生的项目:mvn clean

c.运行测试:mvn test

d.产生site:mvn site

e.打包:mvn package

f.在本地Repository中安装jar:mvn install

g.发布到远程仓库:mvn deploy

11.Maven生命周期

就是对编译、测试、打包、部署等过程的一个抽象与统一

包含项目清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成

有三套生命周期,而且是相互独立的,分别是clean default site

命令行的输入就应对了生命周期

mvn package:表示执行默认生命周期阶段package

default:构建的核心部分,编译、测试、打包、部署等

site:生成项目报告、站点、发布站点

可仅调用mvn clean清理工作目录

或者仅调用mvn site生成站点

或者直接运行mvn clean install site运行所有三套生命周期

每个生命周期又包含一些阶段(phase)

这些阶段是有序的,每个阶段蕴含一个或多个目标(goal)

并且后面的阶段依赖于前面的阶段

我们和Maven最直接的交互方式就是调用这些生命周期阶段

每一个目标任务实际上是由插件完成的

12.Maven插件

Maven的生命周期与插件相互绑定,用以完成实际的构建任务

具体而言,是生命周期的阶段和插件的目标互相绑定,已完成某个具体的构建任务

compile这一任务,是将default生命周期的compile阶段

和maven-compiler-plugin这一插件的compile目标进行绑定

其实这个目标本身什么都不会做,真正编译代码的是compile插件

插件也是基于坐标保存在Maven仓库当中的

在用到插件的时候,会先从本地仓库查找

如果没有,则从远程仓库查找插件并下载到本地仓库

常用于:

a.创建jar文件

b.创建war文件

c.编译代码文件

d.进行代码单元测试

e.创建项目文档

f.创建项目报告

C.Maven深入

1.在eclipse中配置Maven

eclipse默认支持Maven,自带maven3.2.1

如果想使用1最新的3.5.0,可以如下配置

window->perferences->maven->Installations

在Preferences-->Maven-->User Settings中

点击Update Settings,加载更改后的私有settings.xml

2.创建Maven web project

a.开启eclipse,右键new->other

b.选择maven project

显示创建maven项目的窗口,勾选如图所示,Create a simple project

c.输入maven项目的基本信息

d.完成maven项目的创建

e.选择项目,右键选择Properties,进入属性页面

选择java版本为1.8,去掉web项目,点击应用

然后再勾选上web应用,选择版本为3.0

下方出现一个连接,点击

按图中填写,点击ok

f.在src/main/java下新建package,然后创建Servlet

报错,编辑pom.xml下载javax组件

同时需要在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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.xxxx.login</groupId> <artifactId>Login</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <!-- 仅编译有效 --> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> <scope>provided</scope> </dependency> </dependencies> </project>

g.编辑jsp和servlet

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录页面</title> </head> <body> <form action="LoginServlet" method="post"> 用户名:<input type="text" name="username" /> <input type="submit" value="提交" /> <br> ${result} </form> </body> </html>

servlet

package org.xxxx.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); // 获取参数 String username = request.getParameter("username"); System.out.println(username); // 判断 if (!(username == null || username.equals(""))) { if (username.equals("zhangsan")) { request.getSession().setAttribute("result", "用户名正确"); } else { request.getSession().setAttribute("result", "用户名不存在"); } } else { request.getSession().setAttribute("result", " "); } request.getRequestDispatcher("login.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

h.编译并运行

右键工程->Debug->Debug Configureations

选择工程,在goals中填写clean package,点击debug,查看控制台

刷新工程

将该war包拷贝到tomcat的webapps目录下

点击bin目录下的startup.bat,启动tomcat

3.自动部署至Tomcat

a.Tomcat的用户及权限配置

conf目录下,找到tomcat-users.xml,添加manager权限的用户

<role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="123456" roles="manager-gui,manager-script, manager-jmx,manager-status,admin-script,admin-gui"/>

b.私有的setting.xml

在<servers>节点中添加tomcat下配置的用户信息

id可以任意填写,但username和password必须和a一致

<server> <id>tomcat8</id> <username>admin</username> <password>123456</password> </server>

c.项目的pom.xml中配置

<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <url>http://localhost:8080/manager/text</url> <!-- 必须和setting.xml中的id一致 --> <server>tomcat8</server> </configuration> </plugin> </plugins> </build>

d.使用mvn tomcat7:redeploy进行部署

首先得启动tomcat

查看控制台

查看webapps目录

打开浏览器,自行验证结果

D.Maven继承和聚合

1.Maven继承

在项目开发的过程中,可能多个模块独立开发

但是多个模块可能依赖相同的元素,不如说每个模块都需要junit

继承特性能够帮助抽取各模块相同的依赖和插件等配置

在简化POM的同时,还能够促进各个模块配置的一致性

继承能复用父模块的配置,如groupId等

同时提供项目的一致性管理,如依赖版本等

2.父模块

声明各个子项目的配置:如groupId,依赖版本,依赖管理,插件声明等

实现一次声明,多次使用

其package必须是pom类型,同时无需src等目录,因为不包含项目文件

<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.xxxx.dmeo</groupId> <artifactId>Maven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <properties> <junit.version>4.12</junit.version> <maven.compiler.version>3.7.0</maven.compiler.version> </properties> <!-- 仅仅声明,不会给父项目和子项目引入 具体依赖,同一管理版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> </dependencies> </dependencyManagement> <modules> <module>sample-first</module> <module>MavenSon</module> </modules> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.version}</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>

3.子模块

声明特有的配置,如artifactId,依赖声明等

其package通常是非porn类型,同时需要src等目录,因为包含文件块

<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.xxxx.dmeo</groupId> <artifactId>Maven</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>MavenSon</artifactId> <packaging>pom</packaging> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> </build> </project>

4.Maven聚合

能够把项目的各个模块聚合在一起构建,方便快速构建

想要一次构建两个项目,而不是到两个模块的目录下分别执行mvn命令

Maven的聚合就是为该需求服务的

为了方便用户构建项目,通常将聚合模块放在项目目录的最顶层

其他模块则作为聚合模块的子目录存在

5.聚合模块

通过该模块构建所有包含的模块

其package通常是pom类型,同时无需src等目录,因为不包含项目文件

modules元素是实现聚合的最核心的配置

可以声明任意数量的module元素来实现元素的聚合

现有的实际项目往往是一个POM既是聚合POM又是父POM

这么做主要是为了方便

<!– 平行结构使用,如果是父子结构则无需../--> <modules> <module>../MavenSon</module> </modules>

6.区别

a.对聚合模块来说

它知道有哪些被聚合的模块

但那些被聚合的模块不知道这个聚合模块的存在

b.对于继承关系父POM来说

它不知道有哪些子模块继承与它

但那些子模块都必须知道自己的父POM是什么

7.共同点

a.聚合 POM与继承中父POM的 packaging都是pom

b.聚合模块与继承中父模块除了POM外都没有实际的内容

E.Nexus私服

1.概述

有些公司都不提供外网给项目组人员

不能使用maven访问远程的仓库地址

有必要在局域网里找一台有外网权限的机器搭建私服

公司网速比较慢,通过公司的私服来获取jar包比较快

内部的的一些jar包放在私服上,比较方便的大家使用

通过建立自己的私服,就可以降低中央仓库负荷

节省外网宽带、加速Maven构建、自己部署构件等

2.什么是私服

是一种特殊的远程服务器,代理广域网上的远程仓库,供局域网内Maven用户使用

需要下载maven构件时候, 先从私服请求

不存在则从外部远程仓库下载,缓存到私服后供下载

一些无法从外部下载的构件,可以上传到私服供下载使用

3.目录文件功能

解压nexus

该目录包含了Nexus运行所需要的文件,如启动脚本、依赖jar包等

4.使用步骤(管理员身份运行)

a.JDK  Maven等环境配置正确后,下载nexus对应版本

b.拷贝到目录下,执行bin目录下命令:nexus.exe /run

c.启动后访问http://localhost:8081

d.在右上角有个Log in 的超链接点击登录,默认用户名是 admin 密码是 admin123

5.问题

a.停止Nexus Ctrl+C

b.端口冲突

默认端口8081被占用,或者想使用其他端口开放Nexus服务

则编辑安装目录下conf文件夹的nexus-default.properties

把属性application-port改成其他端口号,然后保存该文件,重启Nexus便可

c.安装为系统服务

运行nexus.exe /install nexus命令

这个时候服务列表里会出现对应的服务。

可以开机运行或使用命令运行:net start nexus

6.单独项目配置从私服下载: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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.xxxx.demo</groupId> <artifactId>Login</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 配置公共私服依赖下载,即代理中央仓库 --> <repositories> <repository> <id>nexus</id> <name>nexus</name> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!-- 插件仓库配置供插件下载 --> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>nexus</name> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>

7.对所有maven项目均有效下载配置:settings.xml

<profiles> <profile> <id>nexusRes</id> <repositories> <repository> <id>nexus</id> <name>Nexus epository</name> <url>http://localhost:8081/repository/maven-public/</url> <layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>nexusRes</activeProfile> </activeProfiles>

8.登录私服权限认证配置:settings.xml

<!--nexus默认是需要登陆操作的,在此配置权限认证信息 id必须分别对应pom.xml中<distributionManagement>元 素中release和snapshot的id --> <servers> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>

9.发布构件到私服

发布非当前项目构件:命令行方式

mvn deploy:deploy-file

-DgroupId=oracle

-DartifactId=oracle

-Dversion=0.0.0

-Dpackaging=jar

-Dfile=e:\ojdbc6.jar

-Durl=http://localhost:8081/repository/maven-releases/

-DrepositoryId=releases

注意:repositoryId 是settings.xml中配置的server的id

转载请注明原文地址: https://www.6miu.com/read-250108.html

最新回复(0)