【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。

相关推荐
爱上语文34 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people38 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
qmx_072 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战2 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
技术无疆4 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
架构文摘JGWZ7 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师8 小时前
spring获取当前request
java·后端·spring
aPurpleBerry8 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏8 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko8 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring