maven 属性的约定:“点大小写”还是“驼峰大小写”?

Posted

技术标签:

【中文标题】maven 属性的约定:“点大小写”还是“驼峰大小写”?【英文标题】:Convention for maven properties: "dot case" or "camel case"? 【发布时间】:2015-07-29 15:17:51 【问题描述】:

使用java和Maven,maven属性的约定是什么?

我在这里发布了 2 个示例,这两个示例都被广泛使用。按照惯例,哪一个是正确的?

示例 A

<properties>
    <hibernate.version>4.3.8.Final</hibernate.version>
    <hsqldb.version>2.3.2</hsqldb.version>
    <log4j2.version>2.0.2</log4j2.version>
</properties>

示例 B

<properties>
    <hibernateVersion>4.3.8.Final</hibernateVersion>
    <hsqldbVersion>2.3.2</hsqldbVersion>
    <log4j2Version>2.0.2</log4j2Version>
</properties>

编辑:

这是Maven Properties Guide 的链接。 maven 属性的一些示例包括$project.build.directory(点大小写)和$project.build.outputDirectory(点大小写和驼峰大小写)。

官方文档Maven POM Reference 建议了一个名为&lt;someVar&gt; 的示例属性(驼峰式)。

【问题讨论】:

尝试在programmers.stackexchange.com提问 虽然在 XML 标记名称中使用 camelCase 很常见,但我从事的所有项目都使用您(错误地)调用的蛇形大小写 (snake_case_is_like_this)。这可能是因为在实际的 .properties 文件中,您将使用 java 包名称作为属性的前缀,因此您将使用 com.mydomain.mypackage.myclass.myproperty 作为属性键。 @Bohemian Programmers Exchange,真的吗?这不是一个“概念”问题——它在 java 项目的 maven 依赖项的上下文中是具体的。看不出它不适合这个网站。 这不只是品味问题吗? 看Reflection Properties。 【参考方案1】:

阅读相关文档后,这个问题的答案一直很清楚。

dot.casecamelCase 之间明显的冲突是一个用于引用pom 中的层次结构,而另一个用于变量命名

例如,让我们看看$project.build.outputDirectory。这里的点符号,据我了解,是指变量所在的pom结构,而变量名本身确实是驼峰式的。

<project>
  <build>
    <outputDirectory>/opt/foo</outputDirectory>
  </build>
</project>

换句话说,maven 中变量命名的约定确实是 Camel Case,不要与 pom 结构中的属性/变量的引用混淆,如 $project.version$project.build.outputDirectory 和依此类推,根据惯例,示例 B 将是最正确的:

<properties>
    <hibernateVersion>4.3.8.Final</hibernateVersion>
    <hsqldbVersion>2.3.2</hsqldbVersion>
    <log4j2Version>2.0.2</log4j2Version>
</properties>

【讨论】:

【参考方案2】:

我可能会迟到,但这是我的 2 美分。

考虑一下,您可能想检查是否有更新的版本可用。您必须在 pom 中找到每个依赖项引用才能知道库的 groupId 和 artifactId。

另一方面,如果您使用如下所示的命名约定,您会立即知道该版本是对 groupId 还是 artifactId 的引用,您只需复制粘贴它并搜索最新版本。

<properties>
    <ch.qos.logback.version>1.2.5</ch.qos.logback.version>
    <logstash-logback-encoder.version>6.6</logstash-logback-encoder.version>
</properties>

【讨论】:

以上是关于maven 属性的约定:“点大小写”还是“驼峰大小写”?的主要内容,如果未能解决你的问题,请参考以下文章

Maven入门

Maven的个性化定制

Maven之约定优于配置

Maven 约定配置

Maven -- 版本管理 & 资源配置(资源加载属性值)

分层多模块项目的 Maven 命名约定