Maven完全指南 - 7. 发布管理

116 阅读2分钟

7. 发布管理

Maven 中的发布管理是指将项目发布为正式版本,并部署到指定的远程仓库中,供其他开发人员和项目依赖使用。Maven 的发布管理过程包含版本控制、构建、测试、打包以及最终的构件发布等一系列步骤,确保项目稳定、可重复和有版本化的发布流程。

Maven 的发布管理不仅包含构件发布,还包含站点发布。这两种发布管理功能各有侧重,服务于不同的项目需求。

发布管理.png

7.1 构件发布

构件发布主要是指将项目的构建成果(如 JAR 包、WAR 包等)发布到远程仓库(如本地、公司内部的 Nexus/Artifactory 仓库,或远程公共仓库如 Maven Central)。

<distributionManagement> 是 Maven 项目发布时指定远程仓库的配置节点,包括 正式发布仓库快照发布仓库

<project>
    ...
    <distributionManagement>
        <repository>
            <id>my-releases</id>
            <url>http://my.repository.com/releases</url>
        </repository>
        <snapshotRepository>
            <id>my-snapshots</id>
            <url>http://my.repository.com/snapshots</url>
        </snapshotRepository>
    </distributionManagement>
    ...
</project>
  • <repository>:用于指定正式发布的远程仓库。
  • <snapshotRepository>:用于指定快照版本发布的远程仓库。

同下载依赖的仓库一样,发布构件的仓库的认证也是在全局配置文件 settings.xml 中配置的:

<settings>
    <servers>
        <server>
            <id>my-releases</id>
            <username>my-username</username>
            <password>my-password</password>
        </server>
        <server>
            <id>my-snapshots</id>
            <username>my-username</username>
            <password>my-password</password>
        </server>
    </servers>
</settings>

7.2 站点发布

站点发布则是将项目生成的文档和报告发布到指定的站点服务器(可以是内部或外部服务器),通常包括:

  • 项目文档:例如 README、API 文档、代码变更日志、依赖报告、开发指南等。
  • 生成报告:包括代码覆盖率、测试结果、构建状态、依赖分析、质量审计等。

站点发布通常通过 Maven 的 site 插件生成静态 HTML 文件,然后使用 site-deploy 插件将这些文件发布到服务器,命令如下:

mvn site             # 生成站点内容到 target/site
mvn site-deploy      # 将站点内容发布到指定服务器

配置站点服务器:

<project>
    ...
    <distributionManagement>
        <site>
            <id>my-site</id>
            <url>scp://your.server.com/path/to/site</url>
        </site>
    </distributionManagement>
    ...
</project>

站点服务器的认证配置和仓库配置是一样的,都是在全局配置文件 settings.xml 中进行配置:

<settings>
    <servers>
        <server>
            <id>my-site</id>
            <username>my-username</username>
            <password>my-password</password>
        </server>
    </servers>
</settings>