site plugin org check java maven checkstyle

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