Maven 에 게 자바 c 경 고 를 정확하게 처리 하도록 합 니 다.

8915 단어 자바mavensun
Maven 으로 프로젝트 를 컴 파일 하고 프로젝트 에 SUN 전용 API 를 사용 하면 경고 메 시 지 를 받 을 수 있 습 니 다. 그리고 Maven 은 컴 파일 에 실 패 했 음 을 보고 합 니 다. 이렇게:
... [ERROR]\\workspace\\mvn\javac - warning - test\\src\main\java\com\juvenxu\TestJavac Warning. java: [7, 32] 경고: sun. misc. BASE 64Decoder 는 Sun 전용 API 로 미래 버 전에 서 [INFO] 를 삭제 할 수 있 습 니 다. -- -- -- -- -- - - [INFO] BUILD FAILURE
이것 은 당연히 불합리한 것 입 니 다. javac 는 경고 일 뿐 입 니 다. maven 은 무엇 을 근거 로 직접 실 패 를 보고 합 니까?
사실 가장 좋 은 해결 방법 은 이러한 SUN 전용 API 를 사용 하 는 것 을 피 하 는 것 이다. 이 API 들 은 모두 기 존의 대체 품 이 있 지만 본 고 에서 토론 하고 자 하 는 것 은 이것 이 아니다. 만약 에 어떤 의존 을 사용 했다 면 SUN 전용 API 를 사용 해 야 한다. 당신 은 속수무책 이다.
첫 번 째 반응 은 Maven 이 설정 점 을 제공 할 수 있 을 것 입 니 다. 우 리 는 이런 경 고 를 무시 할 수 있 습 니 다. 네, 처음에 저도 그렇게 생각 했 습 니 다. 한 번 교육 을 받 았 을 때 한 친구 가 이 문 제 를 물 었 습 니 다. 저 는 당연히 대답 하고 싶 습 니 다. "이 설정 은 javac 가 경 고 를 무시 하면 됩 니 다. Maven 의 문제 가 아 닙 니 다."저 는 전혀 해 본 적 이 없습니다.이렇게 무책임 하 게 대답 하 니까나중 linux_china 또 이 문 제 를 토론 한 후에 나 는 손 을 써 서 시도 해 보 았 다. 거의 모든 maven - copiler - plugin 의 설정 을 괴 롭 혔 는데 결국은 풀 리 지 않 았 다!(사실 완전히 풀 리 지 않 습 니 다. 적어도 우 리 는 maven - copiler - plugin 을 설정 하여 컴 파일 오 류 를 무시 할 수 있 습 니 다. 그러나 이 해결 방법 은 저 자신 도 너무 징 그 럽 습 니 다)
풀 리 지 않 으 면 풀 리 지 않 는 다. 적어도 나 는 이 문제 의 근본 적 인 원인 을 찾 았 다. 사실은 내 가 찾 은 것 이 아니 라 Hudson 의 아버지 Kohsuke Kawaguchi 가 발견 한 것 이다.이 렇 습 니 다. Maven 의 committer 는 기본적으로 유럽 과 미국의 것 입 니 다. 사람들의 시스템 은 기본적으로 영어 입 니 다. 그러면 그들 이 Sun 전용 API 를 사용 할 때 발생 하 는 경고 메 시 지 는 영어 입 니 다. "WARNING""처음에 우 리 는 Maven 이 maven - copiler - plugin 으로 컴 파일 작업 을 수행 한 다 는 것 을 알 고 있 었 다. 기본 적 인 상황 인 maven - copiler - plugin 은 자바 c 를 호출 하여 컴 파일 을 완성 했다. 그러면 자바 c 가 'WARNING' 을 제시 할 때 그들 은 이 키워드 에 따라 if 판단 을 해서 일 을 해결 했다."
그러나 그들 은 이 세계 에 일본, 중국 등 나라 가 있다 는 것 을 잊 었 습 니 다. 비록 Kohsuke Kawaguchi 는 기본적으로 미국 에서 생활 하지만 일본 에 친구 가 많 을 것 입 니 다. 그의 친구 가 일본어 시스템 으로 이 문 제 를 만 났 을 수도 있 습 니 다. (물론 그 자신 도 일본어 시스템 이 있 을 수도 있 습 니 다) 더 많은 중국 IT 대중 을 언급 할 필요 가 없습니다.이전 에는 Google 에서 "javac maven 경고"를 검색 하면 많은 정보 가 있 었 지만 진정한 해결 방법 은 없 었 습 니 다.최근 까지 저 는 아 리 의 기술 블 로그 에서 이 문 제 를 이야기 하 는 글 을 보고 패 치 를 제 시 했 습 니 다. 방법 은 자바 c 가 영 어 를 사용 하 는 Locale 을 강제로 설정 하 는 것 입 니 다. 사실은 이렇게 하 는 것 이 폭력 적 입 니 다. 만약 에 사용자 가 현지 화 된 정 보 를 비교적 신경 쓰 면 어떻게 합 니까?
Kohsuke Kawaguchi 의 건 의 는 분명히 더욱 합 리 적 이 었 다. 그 는 자바 c 의 패배 로 경 고 를 판단 하지 말고 자바 c 명령 행 의 반환 값 으로 판단 하면 이 문 제 를 피 할 수 있다 고 말 했다.
방안 은 좋 지만 그 가 실현 하지 못 했다 는 점 은 이해 할 수 있다. 사람들 은 큰 소 이 고 시스템 은 모두 영어 로 되 어 있어 서 이런 작은 일 에 관여 할 시간 이 없다.
저 는 기본적으로 영어 시스템 에서 뛰 었 습 니 다. 실제 적 으로 이런 문제 에 부 딪 히 지 않 았 고 이 bug 를 고 치 는 열정 도 별로 없 었 습 니 다. 그러나 가끔 은 동료 Benjamin Bentmann 과 불평 을 했 습 니 다. 이 문 제 는 많은 중국 사용자 들 을 괴 롭 혔 습 니 다. 그 는 Maven 3 의 가장 주요 한 comitter 로 체면 을 세 웠 습 니 다. 일주일 도 지나 지 않 아 고 쳤 습 니 다. 그리고 저 에 게 테스트 를 하 라 고 했 습 니 다.
응, 도의 상 거절 할 수 없어. 나 는 빈 프로젝트 를 만 들 었 어. sun. misc. BASE 64 Decoder 를 써 서 먼저 간단하게 한 번 뛰 었 는데 예상 한 대로 틀 렸 어.이어서 다음 설정 을 추가 하 겠 습 니 다.
view plain copy to clipboard print ?
  
    org.apache.maven.plugins  
    maven-compiler-plugin  
    2.3.1  
      
          
            org.codehaus.plexus  
            plexus-compiler-javac  
            1.8.1  
        
  
    
  
  
이 문 제 는 plexus - copiler - javac 1.8.1 에서 복 구 된 것 이기 때문에 maven - copiler - plugin 을 이 버 전에 의존 하도록 강제 하면 됩 니 다. 이치 대로 maven - copiler - plugin 은 버 전 을 업그레이드 해 야 합 니 다. 그러면 플러그 인 버 전이 아 닌 플러그 인 버 전 을 설정 하면 됩 니 다. 그러나 현재 새 버 전의 maven - copiler - plugin 은 아직 발표 되 지 않 았 기 때문에 위의 설정 을 사용 할 수 밖 에 없습니다.
Maven 으로 컴 파일 하면 이러한 출력 을 볼 수 있 습 니 다:
[INFO] Compiling 1 source file to D:\\workspace\ws - maven - book\javac - warning - test\\target\\classes [WARNING]\\workspace\ws - maven - book\javac - warning - test\src\main\java\com\juvenxu\TestJavacWarning. java: [3, 15] 경고: sun. misc. BASE 64 Decoder 는 Sun 전용 API 로 미래 버 전에 서 [WARNING] 을 삭제 할 수 있 습 니 다.\\workspace\\ws - maven - book\javac - warning - test\src\\main\\java\com\juvenxu\TestJavac Warning. java: [7, 4] 경고: sun. misc. BASE 64 Decoder 는 Sun 전용 API 로 미래 버 전에 서 [WARNING]\\workspace\ws - maven - book\javac - warning - test\src\main\\java\com\juvenxu\TestJavac Warning. java: [7, 32]경고: sun. misc. BASE 64 Decoder 는 Sun 의 전용 API 입 니 다. 미래 버 전에 서 [INFO] - - - - - - - - - - - - [INFO] BUILD SUCCESS [INFO] - - - - - - - -
경 고 는 여전히 인쇄 되 었 지만 Build 가 성공 하여 문제 가 해결 되 었 습 니 다!
마지막 느낌 은 국내 에서 개원 하려 면 기름 을 넣 어야 한 다 는 것 이다!사실 이것 은 큰 bug 가 아니 지만 지역 사회 에 국내의 적 극적인 분자 가 부족 하기 때문에 이 bug 는 계속 지연 되 고 아무 도 상대 하지 않 습 니 다. 모두 가 물 어보 고 물 어보 면 해결 하 는 사람 이 없습니다.
다 같이 기름 넣 어!
- - - - 2010 - 09 - 10, 스승 의 날, 업데이트 - - - - - -
maven - copiler - plugin 2.3.2 가 발표 되 었 기 때문에 이 버 전 을 사용 하 는 것 만 설정 하면 됩 니 다.
view plain copy to clipboard print ?
  
    org.apache.maven.plugins  
    maven-compiler-plugin  
    2.3.2  
  
이 글 의 끝 부분 에서 해결 방법 을 제시 했다. > maven - copiler - plugin 의 버 전 을 2.3.2 로 설정 했다. 우리 프로젝트 의 pom. xml 파일 에 가서 보 았 는데 이쪽 version 은 2.0.2 로 설정 되 어 있 고 2.3.2 로 바 뀌 었 다. 그리고 새로운 버 전의 maven, maven 창 고 를 관리 하지 않 고 컴 파일 하여 문 제 를 해결 했다.
<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-compiler-plugin</artifactId>  
    <version>2.3.2</version> <!--       build    --> 
    <configuration>
    <source>1.6</source>
    <target>1.6</target>
    <encoding>UTF-8</encoding> <!--  GBK      -->
    </configuration>
</plugin>  

오리지널 문장, 전재 출처, 본문 주소: http://www.juvenxu.com/2010/09/01/maven-javac-warning/

좋은 웹페이지 즐겨찾기