2015-05-18 16 views
9

Mit Java und Maven, was ist die Konvention für Maven-Eigenschaften?Konvention für Maven Eigenschaften: "dot case" oder "camel case"?

Ich poste hier 2 Beispiele, die beide weit verbreitet sind. Welcher ist nach der Konvention richtig?

Beispiel 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> 

Beispiel B

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

Edit:

Hier ist ein Link zu einer Maven Properties Guide. Einige Beispiele für Maven-Eigenschaften sind ${project.build.directory} (dot case) und ${project.build.outputDirectory} (sowohl dot case als auch camel case).

Und die offizielle Dokumentation Maven POM Reference schlägt eine Beispieleigenschaft mit dem Namen <someVar> (Kamelfall) vor.

+0

Versuchen sie fragen auf http://programmers.stackexchange.com – Bohemian

+0

Während es ziemlich häufig ist Camelcase in XML-Tag-Namen zu verwenden, die alle die Projekte, die ich gearbeitet habe benutze, was du (falsch) sna nennst ke Fall (snake_case_is_like_this). Dies liegt wahrscheinlich daran, dass Sie in einer tatsächlichen '.properties'-Datei einen Java-Paketnamen als Präfix für Ihre Eigenschaften verwenden würden, sodass Sie als Eigenschaftenschlüssel' com.mydomain.mypackage.myclass.myproperty' haben. – beerbajay

+0

@beerbajay Danke für die Eingabe. Das Problem mit camelcase ist, dass es mit einigen eingebauten maven-Eigenschaften zu kollidieren scheint, wie 'project.build.sourceEncoding' und' project.version' – vikingsteve

Antwort

10

Nach dem Lesen der relevanten Dokumentation war die Antwort darauf die ganze Zeit klar.

Der scheinbare Widerspruch zwischen dot.case und camelCase ist, daß man diehierarchische Struktur in den POM Referenz verwendet wird, während die andere für die variable Benennung verwendet wird.

Betrachten wir zum Beispiel ${project.build.outputDirectory}. Die Punktnotation bezieht sich hier, soweit ich das verstehe, auf die Pom-Struktur, in der sich die Variable befindet, während der Variablenname selbst in Kamelfall ist.

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

Mit anderen Worten, ist die Konvention für die Variablennamen in Maven in der Tat Kamel Fall, nicht mit Verweisen auf Eigenschaften/Variablen innerhalb der pom Struktur wie ${project.version}, ${project.build.outputDirectory}, und so weiter zu verwechseln, und Beispiel B wäre korrekteste nach der Konvention:

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