-
maven-complier-plugin java version 설정Maven 2021. 3. 14. 20:56
개발도구 자체 Maven 세부정보(dependency, version, build....) 확인 방법
어떤 개발 도구이던지 자체적으로 플러그인이 설치되어 있습니다.
그걸 확인할 수 있는 방법은 Effective POM을 확인하는 방법입니다.
(약간 다를 수 있습니다. 정확한 방법은 사용하시는 개발도구 intellij 나 eclipse 자체적으로 설치한 plugin들이 어떤 것이 있고 그 중 maven 플러그인은 어떤 버전을 설치했는지를 보시는게 정확하다 할 수 있습니다.)
저희가 pom.xml 파일에 빌드 및 플러그인 설정을 하나도 하지 않아도 Effective POM에 가서 확인해 보면 저희가 설정하지 않은 플러그인들이 개발도구에 의해 자동으로 설정되어진 것을 볼 수 있습니다.
Maven 프로젝트를 볼 때 우선적으로 pom.xml을 확인하겠지만,
여기서 Maven의 세부정보를 파악하기 위해서는 Effective POM을 확인해야 합니다.
Eclipse(STS), intellij 모두 해당 기능을 제공하니 한번 확인해 보시면 실질적으로 사용되는 의존성과 빌드 플러그인 정보가 모두 포함되어 있는걸 확인할 수 있습니다.
intellij 에서 확인 방법(intelliJ IDEA 2020.3.2 (Ultimate Edition))
pom.xml 파일을 열고 우클릭한 후 아래 Maven > Show Effective POM을 클릭하시면 됩니다.
Ecelipse(STS)확인 방법(Spring Tool Suite 4.9.0.RELEASE)
pom.xml 파일을 열게되면 아래와 같은 탭을 확인하실 수 있는데 여기서 Effective POM 탭을 확인하시면 됩니다.
본론으로 들어가서
Maven-Compiler-plugin 의 Java버전 설정 방법입니다.
첫번째 방법
proerties에만 sorcue, targer 정보 설정하기
<project> [...] <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> [...] </project>
두번째 방법
두번째 방법은 maven-compiler-plugin에 직접 source와 target 버전을 설정하는 방법입니다.
<project> [...] <build> [...] <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> [...] </build> [...] </project>
더욱 상세한 내용은 아래 Apache Maven Complier Plugin을 참고하시기 바랍니다.
Java Compiler 의 source 및 targer 설정
Apache Maven Compiler Plugin – Setting the -source and -target of the Java Compiler
Setting the -source and -target of the Java Compiler Sometimes when you may need to compile a certain project to a different version than what you are currently using. The javac can accept such command using -source and -target. The Compiler Plugin can als
maven.apache.org
여기서 만약 굳이 더 파고들어 가보자 했을때
두가지 궁금증이 생길 수 있습니다.
첫번째 방법에서는
왜 maven.complier.source 라는 이름과 maven.compiler.target 이라는 설정만 했는데 되는 걸까..
그 이름은 어디에서 온 것일까..
두번째 방법에서는
그러면 configuration 속성에는 어떤것이 들어갈 수 있는거야? 라는 겁니다.
완벽한 이해를 시켜드릴 순 없겠고 저 또한 완벽한 세부사항 까지 파악해 본건 아니지만
더 궁금하신 분들을 위해서 간략하게나마 설명 드리고자 합니다.
maven-compiler-plugin-3.8.1 기준
먼저 첫번째 궁금증 maven.complier.source, maven.compiler.target
maven-compiler-plugin 도 결국엔 하나의 프로젝트로 만들어져 있습니다.
해당 소스를 디컴파일해서 확인해 보겠습니다.(디컴파일은 intellij에게 맡겼습니다.)
프로젝트 구조입니다.(사실 source-release를 다운로드 받아서 프로젝트를 생성한 캡처화면 입니다.)
아래는 AbstractCompilerMojo 클래스의 코드 일부 발췌입니다.
위에 보시면 maven.compiler.source와 maven.compiler.source 라는 이름이 명확하게 명시되어 있는 것을 볼 수 있습니다. 또한 default값은 1.5버전이였지만 3.8.0부터 1.6으로 변경된 것 또한 확인하실 수 있습니다.
이제 저희는 maven.compiler.source와 maven.compiler.source 가 어디에서부터 왔는지 알게 되었습니다.
다음 두번째 궁금증 configuration 속성에는 어떤것이 들어갈 수 있는거야?
이번에는 정말 intellij의 도움을 받아 디컴파일된 캡처 자료 입니다.
여기서 plugin.xml 을 확인해 보겠습니다.
아래는 plugin.xml 파일의 일부코드 입니다.
확인해보면 속성으로 사용했던 source와 target이 있는걸 볼 수 있습니다.
그리고 저희가 먼저 확인해 봤던 maven.compiler.source와 maven.compiler.target과 연관되어 있고 기본값이 1.6이라고 했던 것 또한 사실인것을 확인하실 수 있습니다.
이것으로 저희는 그냥 쓰니까 되던데에서
아 어디서 사용하고 있구나.
그리고 속성은 어떤것들이 있고 어떻게 써야하고 기본값은 무엇인지 알게 되었습니다.
쓰다보니 너무 길고 장황하게 늘어놓게 됐네요.
끝까지 읽어주신 분들 감사합니다.
참고로
sonatype에서 제공하는 search.maven
Maven Central Repository Search
search.maven.org
또는 maven repository에서
Maven Repository: Search/Browse/Explore
Piranha HTTP API Last Release on Mar 13, 2021
mvnrepository.com
maven-complier-plugin 3.8.1을 다운로드 받으셔서 확인하실 수 있습니다.
검색 키워드는 두 사이트 모두 동일하게 검색하시면 됩니다.
검색 키워드 groupID:artifactID
-> org.apache.maven.plugins:maven-compiler-plugin
소스코드를 보는 방법은 jar파일을 다운받아 decomplie 하는 방법과
또는 source 파일을 다운로드 받아서 직접 프로젝트에서 여는 방법
또 하나는 pom.xml에 dependency를 추가해서 확인해 보는 방법 중에서 확인해 보실 수 있습니다.
'Maven' 카테고리의 다른 글
spring-boot-starter-parent 없이 maven 구성 (0) 2021.03.16