使用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.case
和camelCase
之间的明显冲突是,一个用于引用POM中的层次结构,而另一个用于变量命名。${project.build.outputDirectory}
。据我所知,这里的点表示法指的是变量所在的点阵结构,而变量名本身确实是驼峰式的。<project>
<build>
<outputDirectory>/opt/foo</outputDirectory>
</build>
</project>
值得注意的是,大多数开源项目(包括Spring Boot, pre-Gradle-migration - see here)使用project
或build
)与.
分隔符组合,即使用 .case。例子:project.build.<variable>
maven.compiler.<variable>
outputDirectory
(与project.build.outputDirectory
一样)target
(与maven.compiler.target
一样).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>