Maven 属性的约定:"dot case" 或 "camel case"?
Convention for maven properties: "dot case" or "camel case"?
使用 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>
编辑:
这里是一个link到一个Maven Properties Guide。 Maven 属性的一些示例包括 ${project.build.directory}
(点大小写)和 ${project.build.outputDirectory}
(点大小写和驼峰大小写)。
并且官方文档 Maven POM Reference 提出了一个名为 <someVar>
(驼峰式大小写)的示例 属性。
看了相关文档,这个问题的答案一目了然。
dot.case
和 camelCase
之间的明显冲突是,一个用于引用 POM 中的层次结构 而另一个用于 变量命名.
例如,让我们看一下${project.build.outputDirectory}
。这里的点符号,据我理解,指的是变量所在的pom结构,而变量名本身确实是驼峰式
<project>
<build>
<outputDirectory>/opt/foo</outputDirectory>
</build>
</project>
也就是说约定如下:
- 要引用位于 POM 中其他位置的变量,请将
project
或 build
等路径段与 .
分隔符组合,即使用 dot.case。例子:
project.build.<variable>
maven.compiler.<variable>
- 要命名实际路径段,包括变量名称本身(最后一段),请使用 lowerCamelCase。例子:
outputDirectory
(如 project.build.outputDirectory
)
target
(如 maven.compiler.target
)
值得注意的是,大多数开源项目(包括例如 Spring 引导、Gradle-迁移前 - 参见 here)使用 .version
作为 路径段而不是作为变量名的补充。
一致性是最重要的考虑因素。如果您的代码库使用 someDependencyVersion
,请坚持使用 - 否则更喜欢 someDependency.version
.
我可能会迟到,但这是我的 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>
使用 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>
编辑:
这里是一个link到一个Maven Properties Guide。 Maven 属性的一些示例包括 ${project.build.directory}
(点大小写)和 ${project.build.outputDirectory}
(点大小写和驼峰大小写)。
并且官方文档 Maven POM Reference 提出了一个名为 <someVar>
(驼峰式大小写)的示例 属性。
看了相关文档,这个问题的答案一目了然。
dot.case
和 camelCase
之间的明显冲突是,一个用于引用 POM 中的层次结构 而另一个用于 变量命名.
例如,让我们看一下${project.build.outputDirectory}
。这里的点符号,据我理解,指的是变量所在的pom结构,而变量名本身确实是驼峰式
<project>
<build>
<outputDirectory>/opt/foo</outputDirectory>
</build>
</project>
也就是说约定如下:
- 要引用位于 POM 中其他位置的变量,请将
project
或build
等路径段与.
分隔符组合,即使用 dot.case。例子:project.build.<variable>
maven.compiler.<variable>
- 要命名实际路径段,包括变量名称本身(最后一段),请使用 lowerCamelCase。例子:
outputDirectory
(如project.build.outputDirectory
)target
(如maven.compiler.target
)
值得注意的是,大多数开源项目(包括例如 Spring 引导、Gradle-迁移前 - 参见 here)使用 .version
作为 路径段而不是作为变量名的补充。
一致性是最重要的考虑因素。如果您的代码库使用 someDependencyVersion
,请坚持使用 - 否则更喜欢 someDependency.version
.
我可能会迟到,但这是我的 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>