Nice programing

package-info.java가 유용한 이유는 무엇입니까?

nicepro 2020. 12. 7. 20:42
반응형

package-info.java가 유용한 이유는 무엇입니까?


Java 프로젝트에서 CheckStyle을 실행하면 Missing package-info.java file.일부 클래스에 대해 표시되지만 전부는 아닙니다. 이 메시지가 가끔 나타나는 이유를 알 수 없습니다. 또한 내 프로젝트는 package-info.java 없이도 완벽하게 실행됩니다.

package-info.java는 무엇을합니까? Java 프로젝트에 정말 필요합니까?


패키지에 대한 javadocs를 생성하는 데 사용됩니다.

/**
* 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


주석

package-info.java를 사용하는 또 다른 좋은 이유는 FindBugs 에서 사용할 기본 주석 을 추가 하는 것 입니다. 예를 들어, 이것을 package-info 파일에 넣으면 :

@DefaultAnnotation(NonNull.class)
package com.my.package;

그런 다음 findbugs가 해당 패키지의 코드에서 실행될 때 모든 메서드와 필드는 .NET으로 주석을 달지 않는 한 null이 아닌 것으로 간주됩니다 @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와 함께).


package-info.java 파일을 사용하면 전체 패키지를 문서화하기 위해 javadoc을 추가 할 수 있습니다. 예를 들어 http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.html참조 하십시오 .

If you don't care about missing package documentation, then ignore the warning or disable the JavadocPackage check.


The package-info.java is a Java file that can be added to any Java source package. It is used to provide info at a "package" level as per its name. It contains documentation and annotations used in the package.

javadoc example is already provided in the answer, the below part explains how it works incase of annotations.

For example, in the below file it is used to "substitute" the occurance of joda.time.DateTime with 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; 

There are a number of annotations available with which can be used to perform different things at "package" level. It can be found at https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/package-summary.html

참고URL : https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful

반응형