2015-05-18 18 views
9

Sử dụng java và Maven, quy ước cho thuộc tính maven là gì?Công ước về thuộc tính maven: "dấu chấm" hoặc "trường hợp lạc đà"?

Tôi đăng 2 ví dụ ở đây, cả hai đều được sử dụng rộng rãi. Cái nào là đúng, theo quy ước?

Ví dụ 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> 

Ví dụ B

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

Edit:

Đây là một liên kết đến một Maven Properties Guide. Một số ví dụ về thuộc tính maven bao gồm ${project.build.directory} (dấu chấm) và ${project.build.outputDirectory} (cả trường hợp chấm và trường hợp lạc đà).

Và tài liệu chính thức Maven POM Reference đề xuất thuộc tính ví dụ có tên <someVar> (trường hợp lạc đà).

+0

Thử hỏi trên http://programmers.stackexchange.com – Bohemian

+0

trong khi đó là khá phổ biến để sử dụng camelCase trong tên thẻ XML, tất cả các dự án tôi đã làm việc trên sử dụng những gì bạn đang (không chính xác) gọi sna ke case (snake_case_is_like_this). Điều này có thể là do trong tệp '.properties' thực tế, bạn nên sử dụng tên gói java làm tiền tố cho thuộc tính của mình, vì vậy bạn có' com.mydomain.mypackage.myclass.myproperty' làm khóa thuộc tính. – beerbajay

+0

@beerbajay Cảm ơn bạn đã nhập. Vấn đề với camelcase là có vẻ như xung đột với một số thuộc tính được xây dựng trong maven, như 'project.build.sourceEncoding' và' project.version' – vikingsteve

Trả lời

10

Sau khi đọc tài liệu liên quan, câu trả lời cho điều này đã rõ ràng tất cả cùng.

Cuộc xung đột rõ ràng giữa dot.casecamelCase là một được sử dụng để tham khảo cấu trúc heirarchical trong pom cái còn lại được sử dụng cho biến đặt tên. Ví dụ, chúng ta hãy xem ${project.build.outputDirectory}. Ký hiệu dấu chấm ở đây, theo như tôi có thể hiểu, đề cập đến cấu trúc pom nơi biến được đặt, trong khi tên biến chính nó thực sự là trong trường hợp lạc đà.

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

Nói cách khác, quy ước cho việc đặt tên biến trong maven thực sự là Camel Trường hợp, không nên nhầm lẫn với tham chiếu đến thuộc tính/biến trong cấu trúc pom như ${project.version}, ${project.build.outputDirectory}, và như vậy, và Ví dụ B sẽ là chính xác nhất theo quy ước:

<properties> 
    <hibernateVersion>4.3.8.Final</hibernateVersion> 
    <hsqldbVersion>2.3.2</hsqldbVersion> 
    <log4j2Version>2.0.2</log4j2Version> 
</properties> 
Các vấn đề liên quan