2013-03-24 69 views
12

我试图将我的github Java/PHP projecttravis-ci环境集成在一起。这是我的特拉维斯配置:版本1.3不支持java泛型和注释(travis集成)

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

下面是特拉维斯打印输出:

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 

输出说,我使用的太旧版本的Java使用注释和泛型。但这些都不是什么新东西,他们必须以某种方式得到支持(我猜)。我一直在看travis/java文档,但发现没有关于java版本的选项(因此我试图使用不同的jdks)。任何人都可以指出我应该把什么放入travis配置文件?


编辑:

以下@hertzsprung,我跑mvn help:effective-pom并返回下面的输出(事实上,无论source也不target属性被记定义maven-compiler-plugin - 我能做些什么呢?):

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

这是我的源pom.xml内容:

<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

这看起来像是你的pom问题,而不是在travis-ci中。查看“mvn help:effective-pom”,看看是否为maven-compiler-plugin设置了元素。 – hertzsprung 2013-03-24 19:13:32

+0

我提供了评论中提到的输出。你可以看看它并提出解决方案吗? – ducin 2013-03-24 19:20:19

+3

你可以尝试[明确指定源和目标](http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html)使用1.7来查看是否这有帮助吗? – hertzsprung 2013-03-24 19:23:14

回答

36

请尝试在Maven构建配置的pom.xml中包含以下代码。我有同样的问题,因为自己和这似乎做的伎俩对我来说:

<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

这也适用于我,但你能告诉我为什么解决了这个问题吗?谢谢。 – 2014-09-08 02:34:09

+0

@ Shubham.Shukla - 很久以前我完全忘了。我认为这是因为你需要1.5以上的注释。 – blackpanther 2014-09-08 08:25:04

+0

我不怪你! :) 谢谢。 – 2014-09-08 08:31:29

7

看起来像Travis是使用源级别和目标JVM设置为JDK 1.3的一些奇怪的原因。我认为他们应该保持maven的默认值(1.5),因为这个错误让我感到意外,并且需要一些时间来修复它,因为我不想根据外部工具来改变我的项目配置和行为。

如果你想避免修改你的pom.xml(这不应该依赖从你的持续集成工具),你可以配置使用特拉维斯源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 

这将使用1.5源代码级别进行编译,并生成针对1.5 jvm的字节码。如果你想瞄准1.7,你可以指定1.7代替1.5。