2013-03-24 10 views
12

Próbuję zintegrować moje środowisko github Java/PHP project ze środowiskiem travis-ci. To jest moja konfiguracja Travis:Generics java i adnotacje nieobsługiwane w wersji 1.3 (integracja Travis)

language: java 
jdk: 
    - openjdk7 
    - oraclejdk7 
script: mvn test 

Poniżej jest wyjście że Travis wydruki:

Using worker: bluebox-linux-1.worker.travis-ci.org:travis-linux-9 
$ git clone --depth=50 --branch=master git://github.com/tkoomzaaskz/wealthy-laughing-duck.git tkoomzaaskz/wealthy-laughing-duck 
Cloning into 'tkoomzaaskz/wealthy-laughing-duck'... 
remote: Counting objects: 458, done. 
remote: Compressing objects: 100% (263/263), done. 
remote: Total 458 (delta 156), reused 390 (delta 96) 
Receiving objects: 100% (458/458), 458.40 KiB, done. 
Resolving deltas: 100% (156/156), done. 
$ cd tkoomzaaskz/wealthy-laughing-duck 
$ git checkout -qf 47d1ef528f19ad6d01288ac9a3d4c550a79b14f4 
$ jdk_switcher use openjdk7 
Switching to OpenJDK7 (java-1.7.0-openjdk-amd64), JAVA_HOME will be set to /usr/lib/jvm/java-7-openjdk-amd64 
update-alternatives: error: no alternatives for apt. 
update-alternatives: error: no alternatives for mozilla-javaplugin.so. 
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so 
$ java -version 
java version "1.7.0_15" 
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04.1) 
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode) 
$ javac -version 
javac 1.7.0_15 
$ mvn install --quiet -DskipTests=true 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project wealthy-laughing-duck: Compilation failure: Compilation failure: 
[ERROR] /home/travis/build/tkoomzaaskz/wealthy-laughing-duck/src/main/java/com/blogspot/symfonyworld/wealthylaughingduck/dao/OutcomeDao.java:[19,8] error: generics are not supported in -source 1.3 
[ERROR] 
[ERROR] (use -source 5 or higher to enable generics) 
[ERROR] /home/travis/build/tkoomzaaskz/wealthy-laughing-duck/src/main/java/com/blogspot/symfonyworld/wealthylaughingduck/model/Income.java:[12,1] error: annotations are not supported in -source 1.3 
[ERROR] 
[ERROR] (use -source 5 or higher to enable annotations) 
[ERROR] /home/travis/build/tkoomzaaskz/wealthy-laughing-duck/src/main/java/com/blogspot/symfonyworld/wealthylaughingduck/model/User.java:[10,1] error: annotations are not supported in -source 1.3 

Wyjście mówi, że używam zbyt starą wersję Java używać adnotacje i rodzajowych. Ale to nic nowego i trzeba je jakoś poprzeć (chyba). Przeglądałem dokumenty travis/java, ale nie znalazłem żadnej opcji dotyczącej wersji java (stąd próbowałem użyć różnych jdks). Czy ktoś może wskazać mi, co mam umieścić w pliku konfiguracyjnym Travis?


edit:

następujące @hertzsprung, wpadłem mvn help:effective-pom i powrócił po wyjściu (w rzeczywistości, ani source ani target atrybutem są zdefiniowane dla maven-compiler-plugin uwaga - co mogę zrobić?):

<!-- ====================================================================== --> 
<!--                  --> 
<!-- Generated by Maven Help Plugin on 2013-03-24T08:15:13     --> 
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/    --> 
<!--                  --> 
<!-- ====================================================================== --> 

<!-- ====================================================================== --> 
<!--                  --> 
<!-- Effective POM for project            --> 
<!-- 'com.blogspot.symfony-world:wealthy-laughing-duck:jar: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>com.blogspot.symfony-world</groupId> 
    <artifactId>wealthy-laughing-duck</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>wealthy-laughing-duck</name> 
    <url>http://maven.apache.org</url> 
    <build> 
    <sourceDirectory>/var/www/github/wealthy-laughing-duck/src/main/java</sourceDirectory> 
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> 
    <testSourceDirectory>/var/www/github/wealthy-laughing-duck/src/test/java</testSourceDirectory> 
    <outputDirectory>/var/www/github/wealthy-laughing-duck/target/classes</outputDirectory> 
    <testOutputDirectory>/var/www/github/wealthy-laughing-duck/target/test-classes</testOutputDirectory> 
    <resources> 
     <resource> 
     <mergeId>resource-0</mergeId> 
     <directory>/var/www/github/wealthy-laughing-duck/src/main/resources</directory> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
     <mergeId>resource-1</mergeId> 
     <directory>/var/www/github/wealthy-laughing-duck/src/test/resources</directory> 
     </testResource> 
    </testResources> 
    <directory>/var/www/github/wealthy-laughing-duck/target</directory> 
    <finalName>wealthy-laughing-duck-1.0-SNAPSHOT</finalName> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.6</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-4</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.0.2</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.4</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-ear-plugin</artifactId> 
      <version>2.3.2</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-ejb-plugin</artifactId> 
      <version>2.2</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.2</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.6.1</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-plugin-plugin</artifactId> 
      <version>2.8</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-rar-plugin</artifactId> 
      <version>2.2</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.0-beta-8</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>2.1</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-source-plugin</artifactId> 
      <version>2.0.4</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.4.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1-beta-1</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
     <artifactId>maven-help-plugin</artifactId> 
     <version>2.2</version> 
     </plugin> 
    </plugins> 
    </build> 
    <repositories> 
    <repository> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>central</id> 
     <name>Maven Repository Switchboard</name> 
     <url>http://repo1.maven.org/maven2</url> 
    </repository> 
    </repositories> 
    <pluginRepositories> 
    <pluginRepository> 
     <releases> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>central</id> 
     <name>Maven Plugin Repository</name> 
     <url>http://repo1.maven.org/maven2</url> 
    </pluginRepository> 
    </pluginRepositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.thrift</groupId> 
     <artifactId>libthrift</artifactId> 
     <version>0.9.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.1.10.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.24</version> 
    </dependency> 
    </dependencies> 
    <reporting> 
    <outputDirectory>/var/www/github/wealthy-laughing-duck/target/site</outputDirectory> 
    </reporting> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 16 seconds 
[INFO] Finished at: Sun Mar 24 20:15:13 CET 2013 
[INFO] Final Memory: 11M/60M 
[INFO] ------------------------------------------------------------------------ 

to jest moje źródło pom.xml treść:

<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>com.blogspot.symfony-world</groupId> 
    <artifactId>wealthy-laughing-duck</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>wealthy-laughing-duck</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> 
     <dependency> 
      <groupId>org.apache.thrift</groupId> 
      <artifactId>libthrift</artifactId> 
      <version>0.9.0</version> 
     </dependency> 
     <dependency> 
      <artifactId>slf4j-api</artifactId> 
      <groupId>org.slf4j</groupId> 
      <type>jar</type> 
      <version>1.7.3</version> 
     </dependency> 
     <dependency> 
      <artifactId>hibernate-core</artifactId> 
      <groupId>org.hibernate</groupId> 
      <type>jar</type> 
      <version>4.1.10.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.24</version> 
     </dependency> 
    </dependencies> 
</project> 
+2

To wygląda na problem z twoim pom, a nie na travis-ci. Spójrz na 'mvn help: effective-pom' dla bogatego śmiechu-kaczki i zobacz, czy elementy lub zostały ustawione dla wtyczki maven-compiler. – hertzsprung

+0

Podałem dane wyjściowe wymienione w komentarzu. Czy możesz rzucić na to okiem i zaproponować rozwiązanie? – ducin

+3

Możesz spróbować [jawnie podać źródło i cel] (http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html), aby użyć 1.7, aby sprawdzić, czy to pomaga? – hertzsprung

Odpowiedz

36

Proszę spróbuj wpisać poniższy kod do pliku pom.xml dla konfiguracji kompilacji Maven. Miałem ten sam problem jak ty i to wydawało się załatwi dla mnie:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArgument></compilerArgument> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 
+1

To też działa dla mnie, ale czy możesz mi powiedzieć, dlaczego to rozwiązuje problem? dzięki. –

+0

@ Shubham.Shukla - to było tak dawno temu zupełnie zapomniałem. Myślę, że to dlatego, że potrzebujesz adnotacji ponad 1.5+. – blackpanther

+0

Nie winię cię za to! :) Dzięki. –

7

Wygląda na jakiś dziwny powód travis korzysta poziom docelowy i źródłowy JVM ustawiony na JDK 1.3. Sądzę, że powinni zachować domyślną wartość maven (1,5), ponieważ błąd ten zaskoczył mnie i zabrało mi trochę czasu, aby to naprawić, ponieważ nie chcę zmieniać konfiguracji projektu i zachowań zgodnie z narzędziami zewnętrznymi.

Jeśli chcesz uniknąć modyfikując pom.xml (które nie powinny być uzależnione od ciągłego narzędzie integracji), można skonfigurować za pomocą Travisa skompilować poziom docelowy i źródłowy approriate JVM:

language: java 
jdk: 
    - oraclejdk7 
    - openjdk7 
install: mvn install -Dmaven.compiler.target=1.5 -Dmaven.compiler.source=1.5 -DskipTests=true -B 
script: mvn test -Dmaven.compiler.target=1.5 -Dmaven.compiler.source=1.5 -B 

ten skompiluje przy użyciu poziomu źródłowego 1.5 i wygeneruje kod bajtowy, którego cel ma 1,5 jvm. Możesz podać 1,7 zamiast 1,5, jeśli chcesz celować w 1.7.