簡體   English   中英

Travis CI為什么認為我的代碼是Java 1.3,以及如何解決它?

[英]Why does Travis CI think my code is Java 1.3, and how to fix it?

我正在使用Java項目(相當標准的Maven,Spring安裝程序)試用Travis CI。

根據Travis文檔,該文件在.travis.yml文件中就足夠了:

language: java

Travis應該注意項目的pom.xml並默認運行mvn test

但是,Travis構建失敗,給了我:

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

我的資料來源是Java 1.6。 我該如何和在哪里告訴特拉維斯? Java項目文檔根本沒有提到-source選項。 (同樣,1.3是一個有點奇怪的默認值,不是嗎?)

通過自定義.travis.yml installscript來使其正常工作,如下所示:

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在本地以及在Heroku上部署時,一切都可以正常運行(例如mvn test )。

更新(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 

很好 請注意,即使pom.xml將Java版本設置為1.8,也必須指定JDK 8。 Travis否則默認為JDK 7。

這是因為您沒有在pom.xml的maven-compiler-plugin配置中顯式設置源和目標級別。

然后,較早版本的Maven使用javac缺省值,即OpenJDK中的Java 1.3 (與Oracle Java中的1.5相對)。

當然,此問題與Maven3 Ubuntu軟件包中Bug有關,該軟件包當前安裝在Travis工作者計算機上。

好消息:在下一個Travis CI構建環境中, 將在Apache tarball版本中安裝Maven 3.1.1 計划於2013年11月部署此更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM