plugin - ¿Por qué es package-info.java útil?
checkstyle maven site (4)
No solo algunas anotaciones de findbugs, sino muchas anotaciones Java en bibliotecas comunes tienen el tipo java.lang.annotation.ElementType.PACKAGE
como uno de los posibles valores de su propia anotación java.lang.annotation.Target
, por ejemplo:
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
y mucho más.
Este archivo package-info.java
sería el archivo, donde puede colocar tales anotaciones (junto con el javadoc).
Cuando ejecuto CheckStyle sobre mi proyecto Java, dice Missing package-info.java file.
para algunas clases, pero no todas. Realmente no puedo entender por qué este mensaje aparece solo algunas veces. Además, mi proyecto funciona perfectamente bien sin el paquete-info.java.
¿Qué hace el paquete-info.java? ¿Realmente lo necesito para mis proyectos de Java?
Otra buena razón para usar package-info.java es agregar anotaciones predeterminadas para su uso por findbugs . Por ejemplo, si coloca esto en su archivo de información de paquete:
@DefaultAnnotation(NonNull.class)
package com.my.package;
luego, cuando findbugs se ejecuta en el código de ese paquete, se supone que todos los métodos y campos son no nulos a menos que los anote con @CheckForNull
. Esto es mucho más agradable y más infalible que requerir que los desarrolladores @NonNull
anotaciones @NonNull
a cada método y campo.
Se usa para generar javadocs para un paquete.
/**
* Domain classes used to produce .....
* <p>
* These classes contain the ......
* </p>
*
* @since 1.0
* @author somebody
* @version 1.0
*/
package com.domain;
com.domain
información del paquete para el paquete com.domain
:
Ejemplo de resultado: https://docs.oracle.com/javase/7/docs/api/java/awt/package-summary.html
Un archivo package-info.java permite agregar javadoc para documentar un paquete completo. Ver http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.html por ejemplo.
Si no le importa perder la documentación del paquete, ignore la advertencia o deshabilite la comprobación de JavadocPackage .