어떤 이유로 든 제 주식 인 우분투 13.10 메이븐 설치는 오래된 플러그인을 사용합니다. 대부분의 노골적 컴파일러 플러그인은 자바 1.3에있는 디폴트 버전 2.0.2입니다 :Maven은 우분투 설치시 오래된 플러그인을 사용합니다
$ mvn --show-version compile
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.11.0-14-generic", arch: "amd64", family: "unix"
[INFO] Scanning for projects...
[...]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project simple: Compilation failure
[ERROR] [...]/simple/src/main/java/org/sonatype/mavenbook/App.java:[11,17] error: generics are not supported in -source 1.3
컴파일 때문에 제네릭을 사용 ArrayList<Integer> a = new ArrayList<Integer>();
실패합니다. 이제 나는 maven이 현재 컴파일러 플러그인 (generics are not supported in -source 1.3 참조) 을 사용하도록 강제 할 수 있음을 알고 있지만, 근본 원인을 모든 pom 파일에 사용하는 모든 플러그인을 추가하는 것보다 해결할 것입니다. 다른 해결책이 없다면 상위 pom에 플러그인 사양을 추가 할 것이지만 여전히 합리적인 maven이 플러그인 버전을 선택하는 것에 관심이 있습니다.
내 환경 : 내 지역 m2 저장소에는 Settings.XML이 없다, 내 (주 우분투) /etc/maven/m2.conf
는 다음과 같습니다
main is org.apache.maven.cli.MavenCli from plexus.core
set maven.home default ${user.home}/m2
[plexus.core]
optionally ${maven.home}/lib/ext/*.jar
load ${maven.home}/lib/*.jar
그리고 내 /etc/maven/settings.xml
몇 가지 의견을 제외하고 기본적으로 비어 있고 빈 xml 태그. 프로젝트 pom은 mvn archetype:generate -DgroupId=org.sonatype.mavenbook -DartifactId=simple -Dpackage=org.sonatype.mavenbook -Dversion=1.0-SNAPSHOT
에 의해 생성되는 기본값입니다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>simple</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
어떤 조언이 있습니까?
부모 POM이 정의되어 있습니까? 어쩌면 여전히 컴파일러 플러그인 버전을 지정합니까? – NickDK
@NickDK : 아니요, 아무 것도 없습니다 :( – Perseids