【Maven】常用命令、插件管理、私服nexus

【Maven】常用命令、插件管理、私服nexus

常用命令

  Maven提供了一系列常用命令,用于构建、测试和管理项目。以下是一些常用的Maven命令示例:

  mvn clean: 清除项目中生成的输出目录(如 target 目录)。

  mvn compile: 编译项目源代码。

  mvn test: 运行项目的单元测试。

  mvn package: 打包项目,生成可发布的构建物(如 JAR、WAR 或其它格式)。

  mvn install: 将项目构建物安装到本地 Maven 仓库,以供其他项目使用。

  mvn deploy: 将项目构建物部署到远程 Maven 仓库,以供其他开发人员访问和使用。

  mvn clean install: 清除项目并重新构建并安装项目。

  mvn dependency:tree: 显示项目的依赖树,包括所有传递性依赖。

  mvn help:system: 显示 Maven 系统信息。

  mvn archetype:generate: 根据 Maven 构建模板生成项目骨架。

插件管理

  在Maven中,插件是一种扩展机制,用于提供额外的构建、测试、部署和其他项目管理功能。插件可以通过Maven的插件管理系统进行管理和配置。下面是插件管理Maven的一些常见操作:

  定义插件:在项目的pom.xml文件中,使用<build>元素来定义插件。在<plugins>元素中添加插件的配置,包括插件坐标、执行目标、配置参数等。

  集成插件:Maven有一些常用的内置插件,如maven-compiler-pluginmaven-surefire-plugin等。这些插件可以直接在项目的pom.xml文件中通过<plugins>元素配置,无需额外的步骤。

  自定义插件:除了使用内置插件,您还可以编写自己的插件。Maven 使用 Apache Maven 插件插件(Apache Maven Plugin Plugin)来创建和管理插件项目。可以使用Maven Archetype来生成插件项目的骨架。

  生命周期绑定:Maven插件可以与Maven生命周期进行绑定。通过为插件配置<executions>元素,可以将插件的执行目标绑定到特定的构建阶段,例如编译、测试、打包等。

  插件版本管理:在项目的<build>元素中的<pluginManagement>元素中指定插件版本,可以对插件的版本进行统一管理。这样可以确保所有模块使用相同版本的插件,提高构建的一致性和可维护性。

  运行插件:通过运行mvn plugin-name:goal命令来执行插件的目标。例如,mvn clean, mvn compile, mvn test, mvn package等都是运行插件的预定义目标。

  插件配置:使用<configuration>元素可以对插件进行详细的配置。可以在项目的pom.xml文件中根据插件的需求进行相应的配置,以满足特定的构建要求。

  Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。每个插件都能实现多个功能,每个功能就是一个插件目标。
  Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。
  例如:compile 就是插件 maven-compiler-plugin 的一个目标

  Maven实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。

私服nexus

Nexus3

  Nexus3 是一个仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。

  平常我们在获取 maven 仓库资源的时候,都是从 maven 的官方(或者国内的镜像)获取,但是这都不是最好的方案,假如在同一个环境内,一个团队的多个开发人员同样的依赖都要从远程获取一遍,从网络方面来说,这是非常耗时的。这时候就需要在局域网内部署一个 Nexus3 用来管理 Maven(apt、yum、gradle、pypi、docker 等等)仓库。

  有些公司都不提供外网给项目组人员,因此就不能使用 maven 访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建 Nexus3 私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了 Nexus3 私服的电脑访问 maven 的远程仓库。

配置私服

  发布jar到私服需要的配置

xml 复制代码
<servers>
  <!-- 发布版 -->
  <server>
    <id>releases</id>
    <username>admin</username>
    <password>admin123</password>
  </server>
  <!-- 快照版 -->
  <server>
    <id>snapshots</id>
    <username>admin</username>
    <password>admin123</password>
  </server>
</servers>

  下载私服仓库jar需要的配置

xml 复制代码
<mirrors>
  <mirror>
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <name>nexus maven</name>
    <url>http://127.0.0.1:8081/repository/maven-public/</url>
  </mirror>
</mirrors>

项目pom中的配置

  准备一个 maven 项目,在 pom.xml 中添加一段配置:

xml 复制代码
<distributionManagement>
	<repository>
		<id>releases</id>
		<name>maven-releases</name>
		<url>http://127.0.0.1:8081/repository/maven-releases/</url>
		<uniqueVersion>true</uniqueVersion>
	</repository>
	<snapshotRepository>
		<id>snapshots</id>
		<name>maven-snapshots</name>
		<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
		<uniqueVersion>true</uniqueVersion>
	</snapshotRepository>
</distributionManagement>

发布时区分正式版、快照版

  发布只要执行命令mvn deploy即可。

  这里配置了两个仓库,一个正式版、一个快照版,maven 是如何区分你要发布到哪一个仓库呢?

  如果你的版本带着 releases,也就是<version>0.0.1-releases</version>,就会发布到 maven-releases。

  如果你的版本带着 snapshots,也就是<version>0.0.1-snapshots</version>,就会发布到 maven-snapshots。

相关推荐
snow@li11 分钟前
Java:跨平台原理与JDK、JRE、JVM全景深度解析
java·开发语言·jvm
覆东流15 分钟前
2.Java程序基础
java·开发语言·后端
snow@li21 分钟前
SpringBoot:全套生命周期全景详解/应用级+Bean级
java·spring boot·rpc
love_muming33 分钟前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
小的~~34 分钟前
ThreadLocal 、InheritableThreadLocal 与 TransmittableThreadLocal 的进阶指南
java·开发语言
北极糊的狐1 小时前
钉钉小程序报错data.formatTime is not a function是因为 axml 模板中不能直接调用 Page 内自定义方法!
java·小程序·钉钉
·薯条大王10 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
ZJH__GO13 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆13 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光13 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言