在 Maven 中发布时的私有构建信息(db 等)?

Posted

技术标签:

【中文标题】在 Maven 中发布时的私有构建信息(db 等)?【英文标题】:private build information (db, etc) when making a release in maven? 【发布时间】:2012-03-14 08:10:02 【问题描述】:

当我想要发布时,如何让开发人员隐藏内容?

例如 - 当发布的时候,我将要创建一个具有不同设置的休眠会话 - 在生活环境中运行的数据库的设置。

如何在 maven-release 期间以其他人看不到它们的方式指定这些?

我在想也许是在构建时使用命令行,设置某种属性?这在企业场景中通常是如何完成的?

【问题讨论】:

【参考方案1】:

您可以为您的 Dev、QA 和 Release 环境定义一个单独的 maven profiles,可以使用 mvn 命令的 -P 选项来调用它。以下是需要包含在pom.xml 中的一些示例配置文件 sn-p:

<properties>
    <hostEnv>QA</hostEnv>
    <hostDB>oracle</hostDB>
</properties>
<profiles>
    <profile>
        <id>$hostEnv-$hostDB</id>
        <activation>
            <activeByDefault>true</activeByDefault>
                            ...                 
        </activation>       
</profile>      
</profiles>

【讨论】:

我远离 activeByDefault - 但是 - 我可以使用 maven pw 加密来加密我在密码字段中输入的内容吗? 您可以使用一些 ant 脚本加密密码,该脚本可以在 maven-antrun-plugin 的帮助下调用【参考方案2】:

诸如密码之类的东西属于 settings.xml 而不是 pom.xml 文件。此外,我建议将此类内容放入 Jenkins 等连续集成服务器上的 settings.xml 中。仅将其放在构建机器上的方法可防止其他人意外创建版本。

【讨论】:

以上是关于在 Maven 中发布时的私有构建信息(db 等)?的主要内容,如果未能解决你的问题,请参考以下文章

在 Vue CLI 中使用私有 npm 包服务/构建时的错误和警告

运行使用 maven 构建的 jar 时的 FlinkMLTools NoClassDef

maven 灵活构建

使用Harbor搭建企业级私有docker仓库

Linux下安装maven(mvn命令)

使用Nexus3构建Docker私有镜像仓库