【发布时间】:2014-04-28 09:44:17
【问题描述】:
我正在处理一个 Java/Maven 项目。 我的 Maven 版本是“Apache Maven 2.2.1 (rdebian-10)”。
我需要在构建项目时定义一些自定义配置。当您使用各种配置标志(configure --this --that)配置项目时,我习惯于 C 项目,然后根据配置脚本定义/找到的参数进行构建。
我需要使用 Java/Maven 项目来模拟此功能,配置系统可以,但在给定文件中隔离用户特定参数也应该没问题。例如,我希望能够在 pom.xml 包含的文件(例如 custom.pom.xml)中定义每个用户的特定配置。例如在我的项目中,我需要指定程序将写入临时文件的路径等。
我的问题是,是否可以在 pom.xml 包含的文件中隔离每个用户的特定配置,和/或使用 Maven 项目处理此问题的自定义方法是什么?
现在我正在提交一个 pom.xml.template 文件,需要将其重命名为 pom.xml 并使用用户特定的参数进行编辑,但这很尴尬,因为当 Maven 需求发生变化时(例如,如果一个新的添加了依赖项)开发人员必须更新他的 pom.xml 文件。这是我的 pom.xml.template 文件中的相关 sn-p:
<profiles>
<profile>
<id>production</id>
<properties>
<database.url>jdbc:postgresql://localhost:5432/myProject</database.url>
<database.user>myProject</database.user>
<database.password>myProjectPassword</database.password>
<repository_path>my/project/repo/path</repository_path>
<external_tool_bin_path>/absolute/path/to/tool/</external_tool_bin_path>
<external_scripts_path>/path/to/scripts/</external_scripts_path>
<tmpdir>tmp</tmpdir>
</properties>
<build>
<finalName>myProject</finalName>
</build>
</profile>
[...]
外部工具和脚本位于每个用户的特定路径中(取决于系统/安装)。
另一种方法是为每个开发人员使用不同的配置文件,这以不同的方式很尴尬(因为我不想在提交的 pom.xml 文件中硬编码用户配置文件)。
或者我可以编写一个配置脚本,但这看起来有点矫枉过正,而且不是很便携,除非我想要求用户依赖 MinGW 或类似的。
提前致谢。
【问题讨论】:
-
为什么需要在用户群上配置构建?你能举一个你的配置的真实例子吗?
-
你不能用profiles吗?
-
我确实在使用配置文件,但我不想将每个用户的配置提交到项目存储库(这就是我使用这个 .template 系统的原因)。我在问题文本中添加了相关的 pom.xml.template sn-p。
-
使用配置文件是错误的方式。最好换个way like documented here。