Ketika saya menjalankan CheckStyle pada proyek Java saya, ia mengatakan Missing package-info.java file.
untuk beberapa kelas, tetapi tidak semuanya. Saya tidak tahu mengapa pesan ini hanya muncul kadang-kadang. Selanjutnya proyek saya berjalan dengan baik tanpa package-info.java.
Apa yang dilakukan package-info.java? Apakah saya benar-benar membutuhkannya untuk proyek Java saya?
java
maven
checkstyle
Socrates
sumber
sumber
Jawaban:
Ini digunakan untuk menghasilkan javadocs untuk sebuah paket.
/** * Domain classes used to produce ..... * <p> * These classes contain the ...... * </p> * * @since 1.0 * @author somebody * @version 1.0 */ package com.domain;
Akan menghasilkan info
com.domain
paket untuk paket:Contoh hasil: https://docs.oracle.com/javase/7/docs/api/java/awt/package-summary.html
sumber
Example result
rujuk apakah itu readme.md?Anotasi
Alasan bagus lainnya untuk menggunakan package-info.java adalah menambahkan anotasi default untuk digunakan oleh FindBugs . Misalnya, jika Anda meletakkan ini di file info paket Anda:
@DefaultAnnotation(NonNull.class) package com.my.package;
lalu ketika findbugs berjalan pada kode dalam paket itu, semua metode dan bidang diasumsikan bukan nol kecuali Anda memberi anotasi pada mereka
@CheckForNull
. Ini jauh lebih bagus dan lebih mudah dilakukan daripada meminta pengembang untuk menambahkan@NonNull
anotasi ke setiap metode dan bidang.sumber
Tidak hanya beberapa anotasi findbugs, tetapi banyak anotasi java di perpustakaan umum memiliki
java.lang.annotation.ElementType.PACKAGE
tipe sebagai salah satu kemungkinan nilaijava.lang.annotation.Target
anotasi mereka sendiri , misalnya: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
dan banyak lagi.
package-info.java
File ini akan menjadi file, di mana Anda dapat menempatkan penjelasan seperti itu (bersama dengan javadoc).sumber
File package-info.java memungkinkan penambahan javadoc untuk mendokumentasikan seluruh paket. Lihat http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.html sebagai contoh.
Jika Anda tidak peduli tentang dokumentasi paket yang hilang, abaikan peringatan atau nonaktifkan pemeriksaan JavadocPackage .
sumber
The package-info.java adalah file Java yang dapat ditambahkan ke setiap paket source Java. Ini digunakan untuk memberikan info pada tingkat "paket" sesuai namanya. Ini berisi dokumentasi dan penjelasan yang digunakan dalam paket.
Contoh javadoc sudah tersedia di jawaban, bagian di bawah ini menjelaskan cara kerjanya memetikan anotasi.
Misalnya, pada file di bawah ini digunakan untuk "menggantikan" kemunculan joda.time.DateTime dengan 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;
Ada sejumlah anotasi yang tersedia yang dapat digunakan untuk melakukan berbagai hal di tingkat "paket". Ini dapat ditemukan di https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/package-summary.html
sumber