2013-12-20 2 views
1

어떤 이유로 든 제 주식 인 우분투 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> 

어떤 조언이 있습니까?

+1

부모 POM이 정의되어 있습니까? 어쩌면 여전히 컴파일러 플러그인 버전을 지정합니까? – NickDK

+0

@NickDK : 아니요, 아무 것도 없습니다 :( – Perseids

답변

1

할 수 있습니다 (그리고해야한다) 내가 메이븐 3.0.4 버전 플러그인 같은 초기 메이븐 컴파일러를 사용하는 이유는 아무 생각하지만 난 그게 생각하지 않습니다 당신의 pom.xml

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

에서 수동으로 플러그인 메이븐 컴파일러를 지정 우분투 고유의 문제. 로컬 설치가 필요한 일반적인 해결책을 모릅니다. 빌드 플랫폼에 의존하기 때문에이를 피하고자합니다. 명시 적으로 이것을 pom에 지정하는 이점은 같은 문제가 다시 발생하지 않고 다른 컴퓨터에서 프로젝트를 빌드 할 수 있다는 것입니다.

모든 프로젝트에서이 작업을 수행하지 않으려면 상위 POM을 사용할 수 있습니다. default maven compiler setting

+0

고마워요. 가능하다면, 제가 사용하는 모든 플러그인에 대해 그 일을 피하고 대신 근본 원인을 해결하십시오. – Perseids

+0

부모님을 설정하십시오. –

+0

일반 솔루션 및 상위 pom에 대한 정보를 추가했습니다. –

관련 문제