2017-05-05 4 views
3

내 현재 작업은 특정 Java 프로젝트가 Java (JRE) 버전 6에서 버전 9로 실행되는지 확인하는 것입니다. Maven에서이 작업을 수행 할 수있는 방법이 있습니까?Maven : 교차 Java 버전 호환성 확인

maven-compilter-plugin을 구성하는 것이 그것의 일부라고 생각합니다. 그것은 더 높은 버전 기능이 사용되지 않도록하기 위해

<source>1.6</source> 

이어야합니까? 그리고 <target>은 어떨까요?

Maven과 함께 실행해야하는 Java 버전은 무엇입니까? 자바 9?

animal-sniffer-maven-plugin도 재미있어 보이지만 여기에 맞는 방법은 확실하지 않습니다. 또한 Java 6은 실제로 최소한의 API가 아니기 때문에 AFAIK에는 Java 9에는없는 클래스가 있습니다 (예 : sun 및 com.sun 패키지의 일부).

그 밖의 무엇? 아무도 이미 이것을 했습니까?

+0

또한보십시오 : http://stackoverflow.com/questions/36583118/is-maven-ready-for-jdk9 – ZhekaKozlov

+3

'com.sun' 패키지는 API의 일부가 아니며 응용 프로그램에서 사용해서는 안됩니다. –

+0

글쎄, 그건 내 응용 프로그램이 아니야. 나는 프로젝트에서 com.sun 클래스를 사용하지 않았고, 다른 누군가는 수년 전에 그랬다. 나는 아마 그들을 찾아서 바꿀 사람이다 ... – mbee

답변

3

이에 대한 몇 가지주의 사항 (어쩌면 정말 답) :

코드 만 JDK 6 (API)에서 코드를 사용하는 경우 동물 - 스니퍼 - 받는다는 - 플러그인 플러그인 최저 인 확인하실 수 있습니다 첫 번째 (또는 다른 JDK 버전)을 확인해야합니다. 또한 프로젝트에 JDK 6 기반 코드 이상을 요구하지 않는 바이트 코드가 들어있는 jar 파일에 종속성이 있는지 확인해야합니다.

<target>/<source>은 이와 같은 것을 보장하지 않습니다. 그들은 생성 된 jar 파일 (클래스 파일 형식)이 적어도 JRE 6에서 작동하지만 JRE 9에서도 실행되는지는 확인하지 않습니다.

JRE 9에서 실행해야하는 경우 프로젝트의 module-info.java 파일.

또한 프로젝트에서 com.sun.*을 사용합니다. 대다수 또는 모두가 사용 중지 된 것으로 선언되었거나 내부적으로 만 공개 된 API의 일부가 아닌 com.sun.*으로 선언 되었기 때문에 많은 일을 할 수 있습니다. 매우 오랜 시간 동안 (예 : 해당 클래스가 존재하지 않는 JDK가 포함 된 Mac에서 실행됩니다) (here 참조).

에서 Maven이 JRE 9에서도 실행되고 있는지 확인해야합니다. (JDK 9 EA 패키지를 사용하여 테스트 중입니다.) 여기서는 animal-sniffer-maven-plugin 등을 사용하여 이 작품.