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 프로젝트에 정말 필요합니까?
답변:
패키지에 대한 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
Example result
readme.md입니까?
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 을 참조 하십시오 .
누락 된 패키지 문서에 대해 신경 쓰지 않는 경우 경고를 무시하거나 JavadocPackage 검사를 비활성화 하십시오 .
package-info.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 에서 찾을 수 있습니다.