0

我已经看到我工作的几个项目在项目中使用profiles.xml 和各种{username}.properties 来进行开发人员沙箱设置,例如部署脚本的部署目录、要运行的端口、要使用的数据库和Web 服务等等。现在 Maven 3 已经取消了对 profiles.xml 的支持,这让我完全质疑这种做法。所以我有几个问题:

  1. 有没有比配置文件更好的机制来实现这一点?
  2. 如果不是,你觉得 {username}.properties 属于 scm 吗?有时(例如)当服务 URL 更改时,我们忘记更新所有开发人员的属性。
  3. 如果在 scm 中有这些属性文件不是一个坏主意,那么开发人员沙箱之间是否应该有某种配置文件继承?那怎么可能呢?
  4. 附带说明一下,您知道为什么 Apache 在 Maven 3 中删除了对 profiles.xml 的支持吗?
4

2 回答 2

1

正如您所说,Maven 3 仅删除了对外部 profiles.xml 文件的支持。您仍然可以在 settings.xml 和 pom.xml 中使用配置文件。当前具有外部profiles.xml 文件的那些项目应将这些配置移动到本地用户的settings.xml 文件中。

1)确实没有比配置文件配置更好的机制来管理环境特定值。

2) scm 中的用户属性文件取决于您拥有的内容以及该信息是否对可能查看它的其他人敏感。如果您正确构建源代码树,则将其存储在 SCM 中应该没有问题。

3) 在过去我参与过的其他项目中,我们在标签、主干和带有 SVN 的分支旁边保留了一个单独的目录,称为配置,该目录的基本目录包含配置文件应该包含的模板看起来像和开发人员文件夹和一个服务器目录。从基本目录,开发人员将在拥有自己的配置文件副本的开发人员目录下创建/分支自己的目录。这使他们能够合并对基本版本的更改并更新“他们的”配置。这解决了很多服务 URL 更改,并允许他们按时完成。

4)没有线索。可能是他们想要删除的 Maven 1 的保留。

哦,别忘了,在 Maven 2.2 和 3.0 中,您可以加密 settings.xml 中的值。

于 2010-11-18T20:00:52.573 回答
0

有没有比配置文件更好的机制来实现这一点?

不,配置文件仍然是完美的。

如果不是,你觉得 {username}.properties 属于 scm 吗?有时(例如)当服务 URL 更改时,我们忘记更新所有开发人员的属性。

我通常会将用户特定的属性放在文件中的~/.m2/settings.xml和通用属性中pom.xml

如果在 scm 中有这些属性文件不是一个坏主意,那么开发人员沙箱之间是否应该有某种配置文件继承?那怎么可能呢?

如果您想从继承中受益,我的建议是使用 maven <properties>

附带说明一下,您知道为什么 Apache 在 Maven 3 中删除了对 profiles.xml 的支持吗?

的支持profiles.xml使 Maven 内部变得复杂且难以测试。并且由于 usingsettings.xml在大多数情况下是可接受的替代方案,profiles.xml因此已被放弃。请参阅以下线程(特别是 Jazon 的消息)。

于 2010-11-18T21:52:56.783 回答