Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java generics and annotations not supported in version 1.3 (travis integration)

I'm trying to integrate my github Java/PHP project with travis-ci environment. This is my travis configuration:

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

Below is the output that travis prints:

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

The output says that I'm using the too old version of java to use annotations and generics. But these are nothing new and they have to be supported somehow (I guess). I've been looking at travis/java docs but found no option about java version (hence I tried to use different jdks). Can anyone point me what should I put into the travis config file?


edit:

following @hertzsprung, I ran mvn help:effective-pom and it returned following output (in fact, neither source nor target attribute are note defined for maven-compiler-plugin - what can I do about it?):

<!-- ====================================================================== -->
<!--                                                                        -->
<!-- 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] ------------------------------------------------------------------------

This is my source pom.xml content:

<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>
like image 592
ducin Avatar asked Mar 24 '13 19:03

ducin


2 Answers

Please try including the following code in your pom.xml for your Maven build config. I had the same problem as yourself and this seemed to do the trick for me:

<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>
like image 200
blackpanther Avatar answered Oct 22 '22 20:10

blackpanther


Looks like for some weird reason travis is using source level and target jvm set to jdk 1.3. I think they should keep the maven default (which is 1.5), because this error caught me by surprise and it took some time to fix it, since I don't want to change my project configuration and behaviors according to external tools.

If you want to avoid modifying your pom.xml (which shouldn't be dependent from your continuous integration tool), you can configure travis to compile using approriate source level and target 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

This will compile using 1.5 source level and produce bytecode targetted for a 1.5 jvm. You can specify 1.7 in place of 1.5 if you want to target 1.7.

like image 21
Luigi R. Viggiano Avatar answered Oct 22 '22 20:10

Luigi R. Viggiano