JavaプロジェクトでCheckStyleを実行するとMissing package-info.java file.
、一部のクラスについて表示されますが、すべてではありません。このメッセージがたまにしか表示されない理由がよくわかりません。さらに、私のプロジェクトはpackage-info.javaがなくても完全に正常に実行されます。
package-info.javaは何をしますか?Javaプロジェクトに本当に必要ですか?
JavaプロジェクトでCheckStyleを実行するとMissing package-info.java file.
、一部のクラスについて表示されますが、すべてではありません。このメッセージがたまにしか表示されない理由がよくわかりません。さらに、私のプロジェクトは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://docs.oracle.com/javase/7/docs/api/java/awt/package-summary.html
Example result
参照しているのかまだ明確ではありません。それはreadme.mdですか?
package-info.javaを使用するもう1つの理由は、FindBugsで使用するデフォルトのアノテーションを追加することです。たとえば、これをpackage-infoファイルに入れると、次のようになります。
@DefaultAnnotation(NonNull.class)
package com.my.package;
その後、findbugsがそのパッケージ内のコードで実行されると、注釈を付けない限り、すべてのメソッドとフィールドはnull以外であると見なされます@CheckForNull
。これは、開発者@NonNull
が各メソッドとフィールドにアノテーションを追加する必要があるよりもはるかに優れており、確実です。
一部のfindbugsアノテーションだけでなく、一般的なライブラリの多くのJavaアノテーションにjava.lang.annotation.ElementType.PACKAGE
は、独自のjava.lang.annotation.Target
アノテーションの可能な値の1つとしてタイプがあります。例:
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とともに)配置できるファイルになります。
package-info.javaファイルを使用すると、javadocを追加してパッケージ全体を文書化できます。たとえば、http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.htmlを参照してください。
パッケージドキュメントの欠落を気にしない場合は、警告を無視するか、JavadocPackageチェックを無効にしてください。
package-info.javaは、任意のJavaソース・パッケージに追加することができますJavaファイルです。名前のとおり、「パッケージ」レベルで情報を提供するために使用されます。パッケージで使用されるドキュメントと注釈が含まれています。
javadocの例はすでに回答で提供されています。以下の部分では、注釈の場合の動作について説明します。
たとえば、以下のファイルでは、joda.time.DateTimeの出現をorg.jadira.usertype.dateandtime.joda.PersistentDateTimeに「置き換える」ために使用されています。
@TypeDefs({
@TypeDef(name = "PersistentDateTime", typeClass = PersistentDateTime.class, defaultForType=DateTime.class)})
package xyz.abc;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.jadira.usertype.dateandtime.joda.PersistentDateTime;
import org.joda.time.DateTime;
「パッケージ」レベルでさまざまなことを実行するために使用できる注釈がいくつかあります。それはで見つけることができますhttps://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/package-summary.html