본문 바로가기
Tools

eclipse oxygen 에서 gradle jdk 10 facet 적용 하기.

by 장쿨이 2018. 5. 19.

gradle 나름 편하고 좋지만 버그도 많고 사용자가 직접 해줘야 할 것이 많습니다. 하루라도 빨리 자동화가 많이 되었으면 좋겠네요.


oxygen 에서 프로젝트 별로 compile 버전을 설정 할 때 jdk9 이상으로 gradle에서 지정 할 경우 1.9 1.10 으로 자동으로 지정 될 겁니다. 허나 eclipse 에서는 jdk8 이상 부터는 앞에 1. 이걸 빼고 9,10 이렇게 설정이 가능 하도록 되어 있습니다. gradle 4.8-rc-1 버전 까지도 제대로 작동 되지않는데요.... 해결 방법은 아래와 같습니다.


저는 subprojects task에 적용 했지만 위치는 편한곳에 하셔도 됩니다.



ext {


defaultCompileVersion  = '10'

commonCompileVersion   = '1.7'

  projectBCompileVersion    = '1.7'

projectCCompileVersion       = '1.7'

}


subprojects {

    apply plugin: 'eclipse-wtp'


    // eclipse 설정 파일 변경

    eclipse {


        //프로젝트별 소스 컴파일 버전을 지정한다.

        if(project.name == "project.a"){

            sourceCompatibility = commonCompileVersion

            targetCompatibility = commonCompileVersion

        }else if(project.name == "project.b"){

            sourceCompatibility = projectBCompileVersion    

            targetCompatibility = projectBCompileVersion    

        }else if(project.name == "project.c"){

            sourceCompatibility = projectCCompileVersion

            targetCompatibility = projectCCompileVersion

        }else {

            sourceCompatibility = defaultCompileVersion

            targetCompatibility = defaultCompileVersion

        }


        wtp {

            facet {


                file{

                    whenMerged { wtpFacet ->

//facet 정보를 읽어와서 jst.java 항목을 찾는다.

//소수점 자리를 읽어와서 jdk8보다 크면 9,10 과같이 설정 하고 

//그렇지 않으면 1.6,1.7,1.8과 같이 지정한다.

//ps. 나중에 이 버그가 수정 된다면 이 작업은 할 필요가 없을 것 같습니다.

                       def facet = wtpFacet.facets.findAll {it.name.startsWith("jst.java")}

                       def jdkVersion = sourceCompatibility.toString().substring(2).toInteger();


                        facet.each {

                            it.version = (jdkVersion > 8) ? jdkVersion : sourceCompatibility

                        }

                    }

                }

            }

        }

...

...

...

                    

댓글