2

我正在使用 Java 项目(非常标准的 Maven,Spring 设置)尝试 Travis CI。

根据 Travis 文档,这在.travis.yml文件中就足够了:

language: java

Travis 应该注意到项目的pom.xmlmvn test默认运行。

但是,Travis 构建失败,给了我:

error: static import declarations are not supported in -source 1.3

我的来源是 Java 1.6。我应该如何以及在哪里告诉特拉维斯?Java项目文档根本没有提到-source选项。(另外,1.3 的默认值有点奇怪,不是吗?)

4

3 回答 3

4

通过自定义使其工作install,如下script所示.travis.yml

language: java
install: mvn install -Dmaven.compiler.target=1.6 -Dmaven.compiler.source=1.6 -DskipTests=true
script: mvn test -Dmaven.compiler.target=1.6 -Dmaven.compiler.source=1.6

...正如此答案中所建议的那样

无论如何,我不知道 Java 1.3 默认值的确切来源,但恕我直言,应该修复。Travis文档谈到了“相当好的默认值”,但在这种情况下,这似乎不是真的。

另一种选择添加一段冗长的 Maven XML来明确指定源和目标级别。好吧,我个人反对必须这样做的想法,只是因为 CI 环境具有愚蠢的默认值。(Maven 的重点不是通过使用合理的约定来避免明确指定内容吗?)我目前pom.xml在本地(例如mvn test)以及在 Heroku 上部署时一切正常。

更新(2015,Java 8)

只是想补充一点,从 2015 年开始,使用Java 8代码库,您不再需要在 Maven 或 Travis 配置中进行此类自定义。您可以摆脱以下情况:

pom.xml, 在顶层<project>:

<properties>
    <java.version>1.8</java.version>
</properties>

并在.travis.yml

language: java
jdk: oraclejdk8 

这很好。请注意,必须指定 JDK 8,即使 pom.xml 将 Java 版本设置为 1.8。Travis 否则默认使用 JDK 7。

于 2013-10-03T12:28:53.543 回答
2

这是因为您没有在 pom.xml 中的 maven-compiler-plugin 配置中显式设置源级别和目标级别。

旧版本的 Maven 然后使用 javac 默认值,即 OpenJDK 中的 Java 1.3(与 Oracle Java 中的 1.5 相反)。

于 2014-07-25T13:31:13.630 回答
0

这个问题肯定与Maven3 Ubuntu 包中的一个错误有关,该包当前安装在 Travis 工作机器上。

好消息:在下一个 Travis CI 构建环境中,Maven 3.1.1 将与 Apache tarball 版本一起安装。此更新计划于 2013 年 11 月部署...

于 2013-11-07T18:59:24.963 回答