【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到私服需要的配置


<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需要的配置


<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 中添加一段配置:


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

相关文章
|
4月前
|
Java 测试技术 Maven
maven总结一: 常用命令
maven总结一: 常用命令
38 6
|
4月前
|
XML Java Maven
maven总结三: 常用插件
maven总结三: 常用插件
49 3
|
3月前
|
敏捷开发 Java 持续交付
阿里云云效产品使用合集之maven仓库是否可以代替自建的Nexus
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
26天前
|
Java 编译器 测试技术
全面理解Maven Compiler Plugin-Maven编译插件
【10月更文挑战第16天】
157 1
|
1月前
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
25 6
|
1月前
|
Java Linux Maven
IDEA如何用maven打包(界面和命令两种方式)
【10月更文挑战第14天】本文介绍了两种Maven项目打包方法:命令行与IDEA界面。首先确保已安装Maven并配置环境变量,通过`mvn -v`检查安装。命令行打包需进入项目目录,执行`mvn package`,之后在`target`目录查看结果。IDEA打包则需配置Maven路径,打开Maven Projects窗口,双击Lifecycle下的`package`阶段,同样在`target`目录查找生成文件,并在Build窗口查看日志以排查问题。
667 1
|
18天前
|
Java 测试技术 项目管理
maven编译本地代码的命令是什么?
【10月更文挑战第26天】maven编译本地代码的命令是什么?
35 0
|
3月前
|
Java Maven Spring
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
|
3月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
4月前
|
Java Maven
idea安装并使用maven依赖分析插件:Maven Helper
idea安装并使用maven依赖分析插件:Maven Helper
2565 7