Modernizer Maven 플러그인은 최신 Java 버전이 대체하는 레거시 API의 사용을 감지합니다. 이 현대 API는 종종 레거시 동등성보다 성능이 뛰어나고 안전하며 관용적입니다. 예를 들어 Modernizer는 ArrayList 대신 Vector 의 사용을 String.getBytes(String) 대신 String.getBytes(Charset) 및 Java 7 Objects.equal 대신 Objects.equals 을 감지 할 수 있습니다. 기본 구성은 Apache Commons, Guava 및 Joda-Time과 같은 타사 라이브러리를 포함하여 200 개가 넘는 레거시 API를 감지합니다.
Modernizer를 실행하려면 POM.XML의 <plugins> 스탠자에 다음을 추가 한 다음 mvn modernizer:modernizer 호출하십시오.
< plugin >
< groupId >org.gaul</ groupId >
< artifactId >modernizer-maven-plugin</ artifactId >
< version >2.7.0</ version >
< configuration >
< javaVersion >8</ javaVersion >
</ configuration >
</ plugin > <configuration> stanza에는 여러 요소가 포함될 수 있습니다.
<javaVersion> 대상 Java 버전 Vector 기반으로 위반을 가능하게합니다. 필요한 매개 변수.<failOnViolations> FAIL PHASE MODERYIZER가 위반을 감지하는 경우. 기본값은 참으로.<includeTestClasses> 테스트 클래스에서 Modernizer를 실행하십시오. 기본값은 참으로.<violationsFile> 사용자 지정 위반 파일. 또한 표준 위반 점검을 비활성화합니다. 절대 경로를 사용하여 클래스 classpath:/your/file.xml 를 가리킬 수 있습니다.<violationsFiles> 사용자 지정 위반 파일. 후자의 파일은 violationsFile 및 기본 위반을 포함하여 이전 파일의 위반을 무시합니다. 절대 경로를 사용하여 클래스 classpath:/your/file.xml 를 가리킬 수 있습니다.<exclusionsFile> 사용자 지정 위반을 비활성화합니다. 이것은 Javap 형식으로 한 줄에 하나의 제외가있는 텍스트 파일입니다 : java/lang/String.getBytes:(Ljava/lang/String;)[B # 로 시작하는 빈 줄과 선은 무시됩니다.<exclusions> 위반을 비활성화합니다. 각 제외는 Javap 형식이어야합니다 : java/lang/String.getBytes:(Ljava/lang/String;)[B .<exclusionPatterns> <exclusionPattern> 하위 요소를 사용하여 지정된 위반 패턴. 각 제외는 Javap 형식과 일치하는 정규 표현이어야합니다. 위반의 java/lang/.* .<ignorePackages> <ignorePackage> child elements를 사용하여 지정된 패키지 접두사. foo.bar 지정하면 foo.bar.* , foo.bar.baz.* 등을 무시합니다.<ignoreClassNamePatterns> <ignoreClassNamePattern> >를 사용하여 지정된 전체 자격을 갖춘 클래스 이름 (패키지 포함)을 무시할 수 있습니다. 각 제외는 패키지 및/또는 클래스와 일치하는 정규 표현이어야합니다. 패키지는 /하지 않습니다. 분리 된 (ASM의 형식).<ignoreGeneratedClasses> 보존 정책이 runtime 또는 class 이고 간단한 이름이 "생성 된"이 포함 된 주석으로 주석이 달린 클래스는 무시됩니다. (참고 : javax.annotation.generated 및 javax.annotation.processing.generated가 보존 정책 소스가 있습니다 (일명 컴파일러에 의해 폐기).) 빌드의 검증 단계에서 Modernizer를 실행하려면 POM.xml의 Modernizer <plugin> stanza에 다음을 추가하십시오.
< executions >
< execution >
< id >modernizer</ id >
< phase >verify</ phase >
< goals >
< goal >modernizer</ goal >
</ goals >
</ execution >
</ executions >명령 줄 플래그는 Modernizer 구성을 무시할 수 있으며 Modernizermojo는이 모든 것을 문서화 할 수 있습니다. 가장 일반적으로 사용되는 깃발 :
-Dmodernizer.failOnViolations 위반이 감지되면 실패 단계, 기본값은 참으로-Dmodernizer.skip 플러그인 실행, 기본값을 거짓으로 건너 뜁니다 플러그인은 <outputFormat> 사용하여 <configuration> stanza로 구성 할 수있는 여러 형식 중 하나로 Modernizer 위반을 출력 할 수 있습니다.
현재 지원되는 형식과 해당 구성 옵션은 다음과 같습니다.
CONSOLE Maven의 로거를 사용하여 각 위반을 나열합니다. 이것은 기본 형식입니다.<violationLogLevel> 로거의 로그 레벨을 지정하십시오 : error , warn , info 또는 debug . 기본값은 error 입니다.CODE_CLIMATE Code Climate의 사양에 따라 위반을 작성하십시오. Gitlab은 여기에 표시된대로 코드 품질 에이 형식을 사용합니다.<outputFile> 전체 경로 파일을 출력 할 파일입니다. 기본값은 ${project.build.directory}/code-quality.json 입니다<codeClimateSeverity> CodeClimate에 대한 현대식 위반의 심각성 : INFO , MINOR , MAJOR , CRITICAL 또는 BLOCKER . 기본값은 MINOR . 코드는 주석을 통해 클래스 또는 방법 내에서 위반을 억제 할 수 있습니다. 먼저 pom.xml 에 다음의 종속성을 추가하십시오.
< dependencies >
< dependency >
< groupId >org.gaul</ groupId >
< artifactId >modernizer-maven-annotations</ artifactId >
< version >2.7.0</ version >
</ dependency >
</ dependencies > 그런 다음 요소에 @SuppressModernizer 추가하여 무시하십시오.
import org . gaul . modernizer_maven_annotations . SuppressModernizer ;
public class Example {
@ SuppressModernizer
public static void method () { ... }
}javac -Xlint:deprecated저작권 (C) 2014-2022 Andrew Gaul
Apache 라이센스, 버전 2.0에 따라 라이센스