【问题标题】:Including per-user configuration in a pom.xml file在 pom.xml 文件中包含每个用户的配置
【发布时间】: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

标签: java maven


【解决方案1】:

我建议您使用 maven profiles,并将每个用户的配置保留为环境变量,这些变量从 pom 的配置文件中引用为 ${env.PARAMETER}
您必须指导用户根据需要设置他们的环境。

这样,您可以同时享受这两种功能,并且在源代码管理中没有用户特定的值。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2015-10-29
    • 2019-11-19
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多