Maven工具学习使用(十一)——部署项目到仓库

1、使用Maven默认方式

Maven 部署项目时默认使用的上传文件方式是通过 HTTP/HTTPS 协议。要在 Maven 项目中配置部署,您需要在项目的 pom.xml 文件中添加 部分。这个部分定义了如何部署项目的构件(如 JAR 文件)到仓库。。这个部分定义了如何部署项目的构件(如 JAR 文件)到仓库。以下是 部分的示例配置,它指定了发布版本和快照版本的上传仓库:

XML 复制代码
<project>
  ...
  <distributionManagement>
    <repository>
      <id>deployment-repo</id>
      <name>Internal Deployment Repository</name>
      <url>http://myserver/repo/internal/</url>
    </repository>
    <snapshotRepository>
      <id>deployment-snapshot-repo</id>
      <name>Internal Deployment Snapshot Repository</name>
      <url>http://myserver/repo/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  ...
</project>

在这个配置中:

  • <repository>: 定义了发布版本(非快照版本)构件的仓库。
    • <id>: 仓库的唯一标识符,用于在 settings.xml 中引用仓库的配置(如认证信息)。
    • <name>: 仓库的名称,这通常是仓库的人类可读的描述。
    • <url>: 仓库的 URL,Maven 将构件部署到这个 URL。
  • <snapshotRepository>: 定义了快照版本构件的仓库。快照版本通常用于开发过程中的不稳定版本。
  • <id>、<name>和<url>的含义与<repository>相同。
    在 settings.xml 文件中,您可以配置与这些仓库 ID 相关的认证信息,这样 Maven 就可以使用这些凭据来部署构件。
XML 复制代码
<settings>
  ...
  <servers>
    <server>
      <id>deployment-repo</id>
      <username>your-username</username>
      <password>your-password</password>
    </server>
    <server>
      <id>deployment-snapshot-repo</id>
      <username>your-username</username>
      <password>your-password</password>
    </server>
  </servers>
  ...
</settings>

完成这些配置后,当您运行 mvn deploy 命令时,Maven 将使用 HTTP/HTTPS 协议将项目的构件部署到指定的仓库。如果您的仓库支持 HTTPS 并推荐使用,因为它提供了加密的传输,增加了安全性。

2、使用ssh协议部署文件

要在 Maven 项目中使用 SSH 部署程序,您需要在 pom.xml 文件中配置 distributionManagement 部分,并且可能需要在 Maven 的 settings.xml 文件中配置 SSH 服务器信息

XML 复制代码
在 pom.xml 中配置 distributionManagement:您需要指定 <repository> 或 <snapshotRepository> 的 URL 使用 SSH 协议。例如:
<project>
  ...
  <distributionManagement>
    <repository>
      <id>ssh-repo</id>
      <name>Ssh Deploy Repository</name>
      <!-- SSH URL 的格式通常是 ssh://user@host:port/absolute/path/to/repo -->
      <url>ssh://user@host:/path/to/repo</url>
    </repository>
    <!-- 如果您需要为快照版本配置不同的仓库,可以添加 snapshotRepository 部分 -->
  </distributionManagement>
  ...
</project>

在 settings.xml 中配置 SSH 服务器:
<settings>
  ...
  <servers>
    <server>
      <id>ssh-repo</id>
      <username>your-ssh-username</username>
      <!-- SSH 私钥的路径 -->
      <privateKey>/path/to/your/private/key</privateKey>
      <!-- 如果您的私钥有密码,这里填写密码 -->
      <passphrase>your-key-passphrase</passphrase>
    </server>
  </servers>
  
  ##  如果Maven不能找到ssh客户端,配置指定 SSH 客户端的可执行文件路径,<ssh.executable> 应该是 SSH 客户端可执行文件的完整路径。
  ##  例如,在 Windows 上使用 PuTTY,您可能需要指定 
  ##  plink 的路径。
  <profiles>
    <profile>
      <id>ssh-profile</id>
      <properties>
        <ssh.executable>path/to/ssh</ssh.executable>
      </properties>
    </profile>
  </profiles>
  
  ...
</settings>

完成这些步骤后,当您运行 mvn deploy 命令时,Maven 应该能够使用 SSH 客户端来部署您的项目。

3、使用ssh插件部署文件

Maven通过SSH协议传输文件。这对于需要通过SSH来部署文件或与远程服务器交互的Maven项目非常有用。配置POM文件

XML 复制代码
<repositories>
    <repository>
        <id>repo.eclipse.org</id>
        <name>Eclipse Kura Repository - Releases</name>
        <url>https://repo.eclipse.org/content/repositories/kura-releases/</url>
    </repository>
</repositories>
<build>
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>${wagon-ssh.version}</version>
        </extension>
    </extensions>
</build>

配置Maven的设置,启用SSH连接

XML 复制代码
<settings>
  ...
  <servers>
    <server>
      <id>my-ssh-server</id>
      <username>your-ssh-username</username>
      <password>your-ssh-password</password>
      <!-- 或者,如果您使用私钥进行身份验证 -->
      <privateKey>/path/to/your/private/key</privateKey>
      <passphrase>your-key-passphrase</passphrase>
    </server>
  </servers>
  ...
</settings>

在这个配置中:

  • <id>: 服务器的唯一标识符,您在POM中的部分会引用这个ID。
  • <username>: SSH连接的用户名。
  • <password>: SSH连接的密码(如果您使用密码进行身份验证)。
  • <privateKey>: SSH私钥的路径(如果您使用密钥进行身份验证)。
  • <passphrase>: 如果您的私钥有密码,这里填写密码。
相关推荐
Canmag 兴隆磁性13 小时前
中大型钕铁硼产品的磁通测量与自动分选:一条产线自动化的工程实现思路
运维·学习·自动化·永磁材料
小黄人软件15 小时前
桌面需要整理吗?有工具自动分类
学习
老衲不用@飘柔16 小时前
SFP与SFP+学习知识整理
学习
X54先生(人文科技)16 小时前
社会嵌入式终身学习机器与修复时代-ELR架构和技术演化探讨
人工智能·深度学习·学习·架构·开源协议
电子云与长程纠缠17 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5
syagain_zsx17 小时前
BRpc 二次封装:Channel 管理、服务管理与回调工厂
c++·学习·程序人生·rpc·谷歌
其实防守也摸鱼17 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
我命由我1234517 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
kkkkkkkkkk_Z18 小时前
新手自学嵌入式 | 学习日记:Linux驱动复习之系统移植(U-Boot篇)
linux·运维·学习
Rabitebla18 小时前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法