maven 属性的约定:"dot case"还是"camel case"?



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

我在这里发布了2个例子,这两个例子都被广泛使用。根据惯例,哪个是正确的?

示例

<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属性指南的链接。maven属性的一些例子包括${project.build.directory}(点大小写)和${project.build.outputDirectory}(点大小写和驼峰大小写)。

官方文档Maven POM Reference建议使用一个名为<someVar>(驼峰式)的示例属性。

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

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

例如,让我们看看${project.build.outputDirectory}。据我所知,这里的点表示法指的是变量所在的点阵结构,而变量名本身确实是驼峰式的。

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

也就是说,约定如下:

  • 要引用位于POM中其他位置的变量,将路径段(如projectbuild)与.分隔符组合,即使用 .case。例子:
    • project.build.<variable>
    • maven.compiler.<variable>
  • 要命名实际的路径段,包括变量名本身(最后一个段),使用lowerCamelCase例子:
    • outputDirectory(与project.build.outputDirectory一样)
    • target(与maven.compiler.target一样)
值得注意的是,大多数开源项目(包括Spring Boot, pre-Gradle-migration - see 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>

相关内容

  • 没有找到相关文章

最新更新