1

我正在开发一个使用版本控制的项目:

  1. 在 POM 文件中输入版本名称

  2. 它也用作to-be-created .msi文件名的一部分:file_[version].msi

  3. 它用于服务名称,在安装此项目后,.msi 这些参数保存在如下位置:

    a).properties文件作为Spring param: version=0340

    b) 在 pom.xml 中<package-version>0340</package-version>

    c) 作为<filename><version>.wxs文件,由build.xml

    d)也在上述.wxs文件中作为MsiProductVersion = "3.4.0"(注意点)

有没有办法在其他config文件中定义一个参数,用适当的数据填充这些文件,以便只将版本保存在一个地方。现在很容易忽略一个param,并构建一个340.msi将显示330 Service为它的名称。我觉得这很困难,因为并非所有文件都属于一个模型(如Spring)。

4

1 回答 1

0

您可以配置 Maven 以替换资源中的“变量”。将此添加到您的 POM:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...
</build>

现在您可以使用${project.version}它了,它将被以下所有文件中的 POM 版本替换src/main/resourcessrc/test/resources.

至于其他文件,您可以在您的 POM 中使用嵌入式 Ant 任务,也可以编写一个小脚本(Ant、bash,无论您喜欢什么)来读取 POM 并从模板创建其他三个文件。

另一种选择是编写一个单元测试来读取所有文件并确保它们包含正确的值。这样,版本不会自动更新,但是a)版本不会经常更改(这可能会导致您的问题)和b)测试比您在脚本中可以做的要强大得多(他们可以,例如,读取和更新二进制文件)。

于 2012-08-02T12:34:07.130 回答