【问题标题】:Eclipse: project version as a parameter in multiple filesEclipse:项目版本作为多个文件中的参数
【发布时间】:2012-07-31 09:50:25
【问题描述】:
我正在开发一个使用版本控制的项目:
在 POM 文件中输入版本名称
它也被用作to-be-created .msi文件名的一部分:file_[version].msi
-
在服务名中使用,本项目从.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)。
【问题讨论】:
标签:
java
eclipse
version-control
【解决方案1】:
您可以配置 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},它将在src/main/resources 和src/test/resources 下方的所有文件中替换为POM 中的版本。
至于其他文件,您可以使用嵌入的Ant task in your POM 或编写一个小脚本(Ant、bash,无论您喜欢什么)来读取 POM 并从模板创建其他三个文件。
另一种选择是编写一个单元测试来读取所有文件并确保它们包含正确的值。这样,版本不会自动更新,但是a)版本不会经常更改(这可能会导致您的问题)和b)测试比您在脚本中可以做的要强大得多(他们可以,例如,读取和更新二进制文件)。