常用命令
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-plugin
、maven-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。