Maven3应用
1. Maven入门
1.1. 介绍
1.1.1. Maven是什么
Maven是一个项目管理工具,它包含了一个项目对象模型(Project object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Manangement System), 和用来运行定义在生命周期阶段中插件目标的逻辑。
.Maven是面向技术层面,针对Java开发的项目管理工具,它提供了构建 工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结 构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的 交流与协作。
1.1.2. 概念模型
1.1.3. 项目声明周期
清洁(clean)生命周期
预清洁(pre-clean) 执行实际项目清理之前所需的流程
清洁(clean) 删除以前构建生成的所有文件
后清洁(post-clean) 执行完成项目清理所需的流程
默认(default)生命周期
验证(validate) 验证项目是正确的,所有必要的信息可用。
初始化(initialize) 初始化构建状态,例如设置属性或创建目录。
产生来源(generate-sources) 生成包含在编译中的任何源代码。
流程源(process-sources) 处理源代码,例如过滤任何值。
生成资源(generate-resources) 生成包含在包中的资源。
流程资源(process-resources) 将资源复制并处理到目标目录中,准备打包。
编译(compile) 编译项目的源代码。
工艺类(process-classes) 从编译后处理生成的文件,例如对Java类进行字节码增强
。 生成测试来源(generate-test-sources) 生成包含在编译中的任何测试源代码。
流程测试来源(process-test-sources) 处理测试源代码,例如过滤任何值。
生成测试资源(generate-test-resources) 创建测试资源。
流程测试资源(process-test-resources) 将资源复制并处理到测试目标目录中。
测试编译(test-compile) 将测试源代码编译到测试目标目录中
流程检验类(process-test-classes) 从测试编译中处理生成的文件,例如对Java类进行字节码增强。对于Maven 2.0.5及以上版本。
测试(test) 使用合适的单元测试框架运行测试。这些测试不应该要求代码被打包或部署。
制备包(prepare-package) 在实际包装之前,执行必要的准备包装的操作。这通常会导致打包的处理版本的包。(Maven 2.1及以上)
打包(package) 采取编译的代码,并以其可分发的格式(如JAR)进行打包。
预集成测试(pre-integration-test) 在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境等。
集成测试(integration-test) 如果需要,可以将该包过程并部署到可以运行集成测试的环境中。
整合后的测试(post-integration-test) 执行集成测试后执行所需的操作。这可能包括清理环境。
校验(verify) 运行任何检查以验证包装是否有效并符合质量标准。
安装(install) 将软件包安装到本地存储库中,以作为本地其他项目的依赖关系。
部署(deploy) 在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
站点(site)生命周期
预网站(pre-site) 在实际的项目现场生成之前执行所需的进程
网站(site) 生成项目的站点文档
后网站(post-site) 执行完成站点生成所需的进程,并准备站点部署
网站部署(site-deploy) 将生成的站点文档部署到指定的Web服务器
1.1.4. 常见生命周期
验证(validate) - 验证项目是否正确,所有必要的信息可用
编译(compile) - 编译项目的源代码
测试(test) - 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署
打包(package) - 采用编译的代码,并以其可分配格式(如JAR)进行打包。
验证(verify) - 对集成测试的结果执行任何检查,以确保满足质量标准
安装(install) - 将软件包安装到本地存储库中,用作本地其他项目的依赖项
部署(deploy) - 在构建环境中完成,将最终的包复制到远程存储库以与其他开发人员和项目共享。
这些生命周期阶段(以及此处未显示的其他生命周期阶段)依次执行,以完成默认生命周期。给定上述生命周期阶段,这意味着当使用默认生命周期时,Maven将首先验证项目,然后尝试编译源代码,运行这些源代码,打包二进制文件(例如jar),运行集成测试软件包,验证集成测试,将验证的软件包安装到本地存储库,然后将安装的软件包部署到远程存储库。
换句话说,在生命周期里面阶段是连续的,在不出错的前提下,比如执行打包(package)时就一定是执行了测试(test)之后再执行。
1.1.5. Maven版本
●Maven2完成 了对Maven1 的重写。重写的首要目的是要提供了强大的 Java构建和包含API的项目,允许Maven被植 入任何地方,尤其是高级别 的产品如IDEs、质量工具、报告工具等这些。Maven2构建生命周期的概 念正式化,其比Maven1更易扩展。
Maven3在2. x基础_上大幅提升性能。可以自动指定父版本,并行生成, 更好的完整性报告、多语言生成、更好地支持M2Eclipse-..
●我们使用Maven3
1.2. 安装
1.2.1. 官网
1.2.2. 下载
下载地址:
http://maven.apache.org/download.cgi
1 下载
1.2.3 放置到指定的位置(解压)
D:\Program Files\apache\apache-maven-3.6.3
1.2.4 设置环境变量
M2_HOME = D:\Program Files\apache\apache-maven-3.6.3
Path:追加-> %M2_HOME%\bin
1.2.5 配置maven
在M2_HOME\conf,找到settings.xml
添加本地仓库
配置阿里云私服镜像
xml<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:/Program Files/jarrepository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> </servers> <mirrors> <mirror> <id>localRes</id> <name>localRes maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> <profiles> </profiles> </settings>
1.3. 安装的验证使用 mvn -v命令
1.4. 名词
●Project: 任何您想bui Id的事物,Maven都可以认为它们是工程。这 些工程被定义为工程对象模型(POM,Poject object Model)。 -一个工 程可以依赖其它的工程;一个工程也可以由多个子工程构成。
●POM: POM (pom. xmI)是Maven的核心文件, 它是指示Maven如何工作的 元数据文件,类似于Ant中的build. xml文件。POM文件位于每个工程. 的根目录中。
●Groupld: groupld是-个工程的在全局中唯一 -的标识符, -般地,它 就是工程名。groupld有利于使用-个完全的包名,将一个工程从其 它有类似名称的工程里区别出来。
Artifact: artifact 是工程将要产生或需要使用的文件,它可以是 jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个 artifact都由groupld和artifact Id组合的标识符唯一识别。需要被 使用(依赖)的artifact都要放在仓库(Repository)中,否则Maven无 法找到(识别) 它们。
Dependency:为了能够build或运行,一个典型的Java工程会依赖其 它的包。在Maven中, 这些被依赖的包就被称为dependency.
dependency-般是其它工程的artifact.
1.5. 仓库
本地仓库:当下载的资源在本地存储的目录位置
远端仓库:用于maven下载资源时候使用,本地仓库如果不存在资源,需要从远端仓库下载。
1)阿里云私服:国内的中心仓库镜像
2)中心仓库: 位于国外的中心仓库
1.6.使用mvn骨架创建项目
1.6.1 常用骨架
1: appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
12: maven-archetype-mojo(一个Maven的Java插件开发项目)
13: maven-archetype-portlet(一个简单的portlet应用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart() 1
6: maven-archetype-site-simple(简单的网站生成项目)
17: maven-archetype-site(更复杂的网站项目)
18:maven-archetype-webapp(一个简单的Java Web应用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 应用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存档)
28: maven-archetype-sar(JBoss 服务存档)
29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
30: scala-archetype-simple(一个简单的scala的项目)
31: lift-archetype-blank(一个 blank/empty liftweb 项目)
32: lift-archetype-basic(基本(liftweb)项目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)
1.6.2 普通的java项目
创建项目的时候需要提供
1) 组织id
-DgroupId=com.neuedu
2)资源id
-DartifactId=quickstart
3)使用什么骨架 (maven-archetype-quickstart)
-DarchetypeArtifactId=maven-archetype-quickstart
4)是否使用交互模式 默认true
-DinteractiveMode=true
完整命令
mvn archetype:generate -DgroupId=com.neuedu -DartifactId=quickstart -DarchetypeArtifactId=maven-archetype-quickstart
1.6.1.3. 目录结构
编译项目
进入到quickstart项目
执行编译命令
执行骨架中自带的App.java
1)进入classes目录
2)执行java命令
1.6.1.4. J2ee的项目
mvn archetype:generate -DgroupId=com.neuedu -DartifactId=mywebpro -DarchetypeArtifactId=maven-archetype-webapp
1.6.1.4.1. 目录机构
1.6.2. 编译
mvn compile
1.6.3. Test测试
mvn test
1.6.4. Clean清除
mvn clean
删除已经产生的目标文件(target目录)
1.6.5. Package打包
普通的Java项目:Jar
mvn package
war(j2ee项目可以发布到tomcat)
mvn package
1.6.6. Install安装
将资源安装到本地仓库,使当前机器其他项目可以直接依赖使用。
Mvn install
1.7. 本地pom
2. Idea使用maven
设置新打开的时候 不是最后一次编辑的项目
File-->Settings
2.1. Idea集成maven插件(修改配置项)
Idea : 2019.3.3
Maven:3.6.3 (可以使用maven 阿里云镜像)
1 修改下settings.xml指定的 本地仓库
2 配置阿里云镜像
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- localRepository 1 本地仓库: --> <localRepository>D:/Program Files/jarrepository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> </servers> <mirrors> <!--2 阿里云的镜像 --> <!--<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> --> </mirrors> <profiles> </profiles> </settings>
Ø Maven home directory:maven的安装目录,跟环境变量 M2_HOME的值一样
Ø User Setting File:指定当前用户的配置文件 %M2_HOME%\conf\setttings.xml
Ø Local Repository:本地仓库 ,设置完配置文件settings.xml默认自动更新
2.2. 在idea中创建maven项目
2.2.1. 普通的Java工程
提供用于创建maven项目的groupdid、artifactId、version
Groupdid:com.neuedu
artifactId:java1-quickstart
Version: 1.0-SNAPSHOT
2.2.2. 普通的J2EE工程
步骤同上
选择骨架:
2.2.2.1. 发布到jetty
https://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html
在工程的pom.xml的plugins节点增加
执行jetty插件提供的run:goal
配置一个maven命令
1 添加环境
2 选择环境类型
3 设置待执行的命令 jetty:run
4 启动
发布到Tomcat插件
参考:https://www.cnblogs.com/h--d/p/9904920.html
2.3. 有效pom
本地POM:当前使用的项目中的pom.Xml
超级POM:在maven安装录\lib\maven-model-builder-3.6.0.jar
有效的POM:最终实际使用的POM文档
2.4.JDBCUtil 安装到本地仓库
在其他项目中使用jdbcutil
<?xml 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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.neuedu</groupId>
<artifactId>testmvn</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<dependencies>
<dependency>
<groupId>com.neuedu</groupId>
<artifactId>jdbcutil</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>-->
</dependencies>
</project>
2.5 测试代码
package com.neuedu;
import com.neuedu.util.JDBCUtil;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/
* 项目: testmvn
* 类名: AccountTest
* 创建时间: 2020/11/29 10:49
* 描述 :
* 作者 : 张金山
* QQ : 314649444
* Site: https://jshand.gitee.io
*/
public class AccountTest {
@Test
public void testQuery(){
String sql = "select * from account";
List accountList = JDBCUtil.executeQuery(sql,(rs)->{
Map account = new HashMap<String,Object>();
account.put("id",rs.getInt("id"));
account.put("accountName",rs.getString("account_name"));
account.put("amout",rs.getBigDecimal("amout"));
return account;
});
for (Object o : accountList) {
System.out.println(o);
}
}
}
3. Maven的依赖和坐标
Maven坐标的搜索
3.1. 依赖
依赖的配置
< dependency > < groupId >org.apache.commons</ groupId > < artifactId >commons-lang3</ artifactId > < version >3.9</ version > </ dependency >
3.2. 依赖的传递性
A->B
B->C(system)
相当于是:
A-B
A-C(system)
验证依赖原则
3.2.1. 1 创建项目
3.2.2. 2 设置依赖(最短路径)
3.2.2.1. 设置C的依赖
< dependency > < groupId >org.apache.commons</ groupId > < artifactId >commons-lang3</ artifactId > < version >3.1</ version > </ dependency >
3.2.2.2. 设置B的依赖
< dependency > < groupId >com.neuedu</ groupId > < artifactId >C</ artifactId > < version >1.0</ version > </ dependency >
3.2.2.3. 设置D的依赖
< dependency > < groupId >org.apache.commons</ groupId > < artifactId >commons-lang3</ artifactId > < version >3.8.1</ version > </ dependency >
3.2.2.4. 设置A的依赖
< dependency > < groupId >com.neuedu</ groupId > < artifactId >B</ artifactId > < version >1.0</ version > </ dependency > < dependency > < groupId >com.neuedu</ groupId > < artifactId >D</ artifactId > < version >1.0</ version > </ dependency >
3.2.2.5. 将构建(A、B、C、D安装到仓库)
分别执行四个项目的install,将构建安装到本地仓库,使依赖能够找到,安装的顺序,被依赖的有限安装 D-C-B-A顺序
最终的验证,添加命令:
dependency:tree #打印出tree形式
dependency:list #打印出列表形式
dependency:analyze #打印出列表中直接依赖的类库
3.2.3. 2 设置依赖(最短路径)
修改A中的依赖
< dependencies > < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.11</ version > < scope >test</ scope > </ dependency > < dependency > < groupId >com.neuedu</ groupId > < artifactId >C</ artifactId > < version >1.0</ version > </ dependency > < dependency > < groupId >com.neuedu</ groupId > < artifactId >D</ artifactId > < version >1.0</ version > </ dependency > </ dependencies >
使用dependency:tree验证依赖的情况
调整C、D的依赖顺序
< dependencies > < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.11</ version > < scope >test</ scope > </ dependency > < dependency > < groupId >com.neuedu</ groupId > < artifactId >D</ artifactId > < version >1.0</ version > </ dependency > < dependency > < groupId >com.neuedu</ groupId > < artifactId >C</ artifactId > < version >1.0</ version > </ dependency > </ dependencies >
验证结果
3.3. 可选依赖
A-C-commons-lang3
没有optional属性
在C的依赖中添加
< optional >true</ optional >
3.4. 依赖的优化(依赖的排除)
Exclusion 内部指定排除的 groupId 、 artifactId , 不需要指定版本号
4. Maven多项目开发
4.1. 聚合项目
4.1.1. 聚合项目的形式:
4.1.2. 创建 GroupProject 选择骨架 quickstart
4.1.3. GroupPA 子项目创建( Parent不是必须 )
4.1.4. GroupPB的创建过程同上.
4.1.5. 在聚合项目(GroupProject)中注册Module.
< modules > < module >GroupPA</ module > < module >GroupPB</ module > </ modules >
4.1.6. 修改聚合项目的打包方式,编程POM(默认是jar)
< packaging >pom</ packaging >
4.1.7. 聚合项目完成pom.xml
<? xml 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" > < modelVersion >4.0.0</ modelVersion > < groupId >com.neuedu</ groupId > < artifactId >GroupProject</ artifactId > < version >1.0-SNAPSHOT</ version > < packaging >pom</ packaging > < modules > < module >GroupPA</ module > < module >GroupPB</ module > </ modules > < name >GroupProject</ name > <!-- *FIXME change it to the project's website --> * < url >http://www.example.com</ url > < 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 > </ properties > < dependencies > < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.11</ version > < scope >test</ scope > </ dependency > </ dependencies > < build > < pluginManagement > <!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> * < plugins > <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> * < plugin > < artifactId >maven-clean-plugin</ artifactId > < version >3.1.0</ version > </ plugin > <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> * < plugin > < artifactId >maven-resources-plugin</ artifactId > < version >3.0.2</ version > </ plugin > < plugin > < artifactId >maven-compiler-plugin</ artifactId > < version >3.8.0</ version > </ plugin > < plugin > < artifactId >maven-surefire-plugin</ artifactId > < version >2.22.1</ version > </ plugin > < plugin > < artifactId >maven-jar-plugin</ artifactId > < version >3.0.2</ version > </ plugin > < plugin > < artifactId >maven-install-plugin</ artifactId > < version >2.5.2</ version > </ plugin > < plugin > < artifactId >maven-deploy-plugin</ artifactId > < version >2.8.2</ version > </ plugin > <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> * < plugin > < artifactId >maven-site-plugin</ artifactId > < version >3.7.1</ version > </ plugin > < plugin > < artifactId >maven-project-info-reports-plugin</ artifactId > < version >3.0.0</ version > </ plugin > </ plugins > </ pluginManagement > </ build > </ project >
4.2. 项目的继承
子项目可以使用parent标签继承父项目中的配置
5. 私服nexus
5.1. 1 介绍
中心仓库:https://repo1.maven.org/maven2/
私服的好处:
5.2. 2 安装
使用nexus搭建私服 (需要Java支持,JAVA_HOME)
5.2.0.1. 2.11的安装步骤
1)在网盘中下载zip包,并解压开
5.2.0.2. 进入bin目录,将nexus注册成服务
nexus-maven\nexus-2.11.1-01\bin
5.2.0.3. 执行 install 将nexus注册成服务。
5.2.0.4. 启动服务(下次不需要)。
打开系统服务,我的电脑--管理 --服务和应用程序-服务
或者是“services.msc”
找到neuxs服务,右键“启动”
5.2.0.5. 验证nexus
8081服务查看仓库的配置
可以通过管理角色进行管理 admin/admin123
5.3. 3 仓库
5.3.0.1. Host: 宿主仓库:
Releases:发布的正式版本 一般情况发布后不修改
Snapshots:快照的版本 快速迭代的更新,可能代码不稳定
3rd : 第三方的类库
5.3.0.2. Proxy: 代理仓库:
代理其他仓库的意思:
5.3.0.3. Virtual: 虚拟仓库:
virtual 虚拟仓库:用于适配 Maven 1;
5.3.0.4. group: 分组仓库:
将多个仓库以统一的地址对外公开
http://127.0.0.1:8081/nexus/content/groups/public/
5.3.0.5. 上传自定义的列库
1) 使用浏览器管理员的方式
http://127.0.0.1:8081/nexus/content/repositories/releases/com/neuedu/GroupPA/1.0/
5.3.0.6. 使用deploy命令上传到版本库
1 ) 配置认证信息
在settings中添加server节点
3)在需要发布的项目中配置发布管理器
< distributionManagement > < repository > <!-- id 需要 *跟 *settings.xml 文件中配置用 *户 *名、密 *码 *的 *id *保持一致 *--> * < id >deploymentRepo</ id > < name >deploymentRepo</ name > < url >http://127.0.0.1:8081/nexus/content/repositories/releases/</ url > </ repository > </ distributionManagement >
- 执行deploy命令
Deploy到正式版本库的时候可能出现 400,原因是服务器拒绝。
1)version中存在 snapshots
2)服务器中已经存在相同版本的内容(需要设置允许重复发布)
