2014-02-28 32 views
21

當我通過Java項目運行CheckStyle時,它對某些類表示Missing package-info.java file.,但不是全部。我無法弄清楚爲什麼這個消息只是偶爾出現。此外,我的項目運行良好,沒有package-info.java。爲什麼package-info.java有用?

package-info.java做什麼?我真的需要它用於我的Java項目嗎?

+2

您可以將它們用於在包級別進行文檔記錄或註釋。看[這個問題](http://stackoverflow.com/questions/3644726/javadoc-package-html-or-package-info-java)。 – McDowell

+0

我一直都是package-info.java的粉絲,但我不知道2018年的README.md是否更適合 –

+0

@ Sridhar-Sarnobat除了Git的package-info.java和README.md之外,還有Confluene可能會添加Jira門票。這樣也可以添加圖表,工作流程或視頻。 – Socrates

回答

14

另一個很好的理由使用package-info.java是findbugs添加默認的註釋使用。舉例來說,如果你把這個在你的包信息文件:

@DefaultAnnotation(NonNull.class) 
package com.my.package; 

那麼當FindBugs的對在該包的代碼運行時,所有的方法和字段都假設,除非你@CheckForNull註釋它們是非空。這比要求開發人員將@NonNull註釋添加到每個方法和字段要好得多,也更簡單。

1

不僅一些FindBugs的註釋,但很多公共庫Java註釋有java.lang.annotation.ElementType.PACKAGE類型作爲自己java.lang.annotation.Target註釋的可能值之一,例如:

com.google.gwt.core.client.js.JsNamespace 
com.querydsl.core.annotations.Config 
com.sun.xml.bind.XmlAccessorFactory 
groovy.transform.BaseScript 
java.lang.Deprecated 
javax.annotation.Generated 
javax.xml.bind.annotation.XmlAccessorOrder 
org.hibernate.annotations.TypeDef 
net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf 
org.apache.hive.common.HiveVersionAnnotation 
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeAction 
org.codehaus.commons.nullanalysis.NotNullByDefault 
org.eclipse.persistence.oxm.annotations.XmlNameTransformer 
org.glassfish.jersey.Beta 
org.jgroups.annotations.Experimental 

等等。

這個package-info.java文件將是文件,您可以在這裏放置這樣的註釋(以及javadoc)。

相關問題