2010-11-16 22 views
0

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

  1. 是否有更好的机制,而不是配置文件来实现这一目标?
  2. 如果不是,你觉得{username} .properties属于scm吗?有时(例如)服务URL更改时,我们忘记更新所有开发人员的属性。
  3. 如果在scm中包含这些属性文件并不是一个好主意,那么对于开发人员沙箱之间常见的设置是否应该有某种配置文件继承?这怎么可能完成?
  4. 请注意,为什么Apache在Maven 3中删除了对profiles.xml的支持?

回答

1

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

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

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

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

4)不是线索。可以从Maven 1暂缓,他们想要删除。

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

0

是否有更好的机制,而不是配置文件来实现这一目标?

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

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

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

如果在scm中包含这些属性文件并不是一个坏主意,那么对于开发人员沙箱之间常见的设置是否应该有某种配置文件继承?这怎么可能完成?

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

作为一个方面说明,你知道为什么Apache在Maven 3中删除了对profiles.xml的支持吗?

profiles.xml的支持使得Maven内部变得复杂而且很难测试。而且由于在大多数情况下使用settings.xml是可接受的替代方案,因此profiles.xml已被删除。请参阅following thread(特别是Jazon的消息)。

+1

将settings.xml用于用户特定设置的问题在于,如果该设置是用户和项目特定的(例如,开发人员可能拥有特定项目的沙箱数据库),唯一的方法是使用属性名称在所有项目中都是唯一的(例如,项目A和项目B不能在settings.xml中具有db.url属性)。我唯一能想到的其他事情是为每个开发人员检查不同的settings.xml,并使用mvn -s 。 – Keegan 2010-12-17 02:12:49

相关问题