2015-05-18 13 views
9

Utilizzo di java e Maven, qual è la convenzione per le proprietà di Maven?Convenzione per proprietà di esperti: "dot case" o "caso cammello"?

Sto postando qui 2 esempi, entrambi ampiamente utilizzati. Quale è corretta, secondo la convenzione?

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

Esempio B

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

Edit:

Ecco un link ad un Maven Properties Guide. Alcuni esempi di proprietà di esperti includono ${project.build.directory} (dot case) e ${project.build.outputDirectory} (entrambi case con puntini e casi cammello).

E la documentazione ufficiale Maven POM Reference suggerisce una proprietà di esempio denominata <someVar> (caso cammello).

+0

Prova a chiedere a http://programmers.stackexchange.com – Bohemian

+0

Mentre è abbastanza comune l'uso di camelCase in nomi di tag XML, tutti i progetti cui ho lavorato su usa quello che stai (erroneamente) chiamando sna caso ke (snake_case_is_like_questo). Questo è probabilmente da quando in un file '.properties 'effettivo, dovresti usare un nome di pacchetto java come prefisso per le tue proprietà, quindi dovresti avere" com.mydomain.mypackage.myclass.myproperty' come chiave di proprietà. – beerbajay

+0

@beerbajay Grazie per l'input. Il problema con Camelcase è che sembra essere in conflitto con alcune proprietà di Maven, come 'project.build.sourceEncoding' e' project.version' – vikingsteve

risposta

10

Dopo aver letto la documentazione pertinente, la risposta a questo era chiara fin dall'inizio.

L'apparente conflitto tra dot.case e camelCase è che uno è usato per fare riferimento alla struttura gerarchica nel pom mentre l'altro è usato per variabile denominazione.

Ad esempio, diamo un'occhiata a ${project.build.outputDirectory}. La notazione dei punti qui, per quanto posso capire, si riferisce alla struttura del pom in cui si trova la variabile, mentre il nome della variabile stessa è effettivamente nel caso dei cammelli.

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

In altre parole, la convenzione per denominazione variabile in maven è infatti cammello cassa, da non confondere con riferimenti alle proprietà/variabili all'interno della struttura pom come ${project.version}, ${project.build.outputDirectory}, e così via, e Esempio B sarebbe più corretto in base alla convenzione:

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