2015-05-18 38 views
9

Przy użyciu java i Maven, jaka jest konwencja dla właściwości maven?Konwencja dotycząca właściwości nieruchomości: "przypadek dot" lub "sprawa wielbłąda"?

Zamieszczam tutaj 2 przykłady, z których oba są w powszechnym użyciu. Który z nich jest poprawny, zgodnie z konwencją?

Przykład

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

Przykład B

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

Edycja:

jest łącze z Maven Properties Guide. Niektóre przykłady właściwości maven obejmują ${project.build.directory} (przypadek dot) i ${project.build.outputDirectory} (zarówno przypadek dot, jak i wielbłąd).

I oficjalna dokumentacja Maven POM Reference sugeruje przykładową właściwość o nazwie <someVar> (skrzynka wielbłąda).

+0

Spróbuj zapytać o http://programmers.stackexchange.com – Bohemian

+0

Choć jest to dość powszechne w użyciu CamelCase w nazwach znaczników XML, wszystkie projekty mam pracowali nad użyj tego, co (niesłusznie) nazywasz sna ke case (snake_case_is_like_this). Jest tak prawdopodobnie dlatego, że w rzeczywistym pliku '.properties' użyjesz nazwy pakietu java jako przedrostka dla twoich właściwości, więc jako klucz właściwości będziesz miał" com.mydomain.mypackage.myclass.myproperty ". – beerbajay

+0

@beerbajay Dzięki za wejście. Problem z camelcase polega na tym, że wydaje się on być w konflikcie z niektórymi wbudowanymi właściwościami maven, takimi jak 'project.build.sourceEncoding' i' project.version' – vikingsteve

Odpowiedz

10

Po przeczytaniu odpowiedniej dokumentacji, odpowiedź na to pytanie była od początku jasna.

Pozorny konflikt dot.case i camelCase jest to, że jest wykorzystywany do odniesienia się heirarchical strukturę pom zaś drugi jest używany do zmienna nazewnictwa.

Na przykład, spójrzmy na ${project.build.outputDirectory}. Zapis kropki tutaj, o ile rozumiem, odnosi się do struktury pom, w której znajduje się zmienna, podczas gdy sama nazwa zmiennej jest rzeczywiście w przypadku wielbłąda.

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

Innymi słowy, Konwencji o zmiennej nazewnictwa w Mavenie rzeczywiście Camel obudowy nie należy mylić z odniesieniem do właściwości/zmiennych w strukturze pom jak ${project.version}, ${project.build.outputDirectory}, i tak dalej, i Przykładu B będzie najbardziej poprawne zgodnie z konwencją:

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