當我通過Java項目運行CheckStyle時,它對某些類表示Missing package-info.java file.
,但不是全部。我無法弄清楚爲什麼這個消息只是偶爾出現。此外,我的項目運行良好,沒有package-info.java。爲什麼package-info.java有用?
package-info.java做什麼?我真的需要它用於我的Java項目嗎?
當我通過Java項目運行CheckStyle時,它對某些類表示Missing package-info.java file.
,但不是全部。我無法弄清楚爲什麼這個消息只是偶爾出現。此外,我的項目運行良好,沒有package-info.java。爲什麼package-info.java有用?
package-info.java做什麼?我真的需要它用於我的Java項目嗎?
它用於爲包生成javadoc。
/**
* Domain classes used to produce .....
* <p>
* These classes contain the ......
* </p>
*
* @since 1.0
* @author somebody
* @version 1.0
*/
package com.domain;
會生成包信息爲com.domain
包:
結果舉例:https://jaxb.java.net/nonav/2.2.1/docs/api/overview-summary.html
package-info.java文件允許添加javadoc來記錄整個包。例如,請參閱http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.html。
如果您不在乎丟失的包裝說明文件,請忽略警告或禁用JavadocPackage check。
另一個很好的理由使用package-info.java是findbugs添加默認的註釋使用。舉例來說,如果你把這個在你的包信息文件:
@DefaultAnnotation(NonNull.class)
package com.my.package;
那麼當FindBugs的對在該包的代碼運行時,所有的方法和字段都假設,除非你@CheckForNull
註釋它們是非空。這比要求開發人員將@NonNull
註釋添加到每個方法和字段要好得多,也更簡單。
不僅一些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)。
您可以將它們用於在包級別進行文檔記錄或註釋。看[這個問題](http://stackoverflow.com/questions/3644726/javadoc-package-html-or-package-info-java)。 – McDowell
我一直都是package-info.java的粉絲,但我不知道2018年的README.md是否更適合 –
@ Sridhar-Sarnobat除了Git的package-info.java和README.md之外,還有Confluene可能會添加Jira門票。這樣也可以添加圖表,工作流程或視頻。 – Socrates