2017-03-15 4 views
5

作業中のプロジェクトでCIを設定しようとしていますが、実際にはgradlewgradle.batのファイルをコミットする必要があるのでしょうか?travis CIが動作するにはgradlewは必須ですか?

これには回避策がありますか、それともこれらのファイルをコミットするのが唯一の方法ですか?

+0

https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:wrapper_generation – petey

+0

唯一の方法かどうかはわかりませんが、自分のレポが設定されている方法ですアップ。 –

+0

あなたのシステムとシステム変数にgradleがインストールされていれば、それを実行することが可能かもしれない、という友人に教えてください。しかし、私はそれが異なったグラデルバージョンのプロジェクトのために働くとは思わない... – Mauker

答えて

4

はトラヴィスCIでGradleのプロジェクトを構築するために必須ではありません。

おそらく最良の選択肢は、Gradleのラッパーをインストールするには、プリインストールのGradleを使用することです。あなたは、標準のトラヴィス記述子でこのビルドファイルを使用する場合、それは動作しません

apply plugin: 'java' 

check.doFirst { 
    println "Running gradle v${project.gradle.gradleVersion}" 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '3.4.1' 
} 

:これはどのように見えるかの簡単なbuild.gradleです。ビルドを実行するには、単にgradleを使用します。しかし、あなたは、ディスクリプタにwrapperタスクを追加する場合:

language: java 
jdk: 
    - oraclejdk8 
before_install: 
    gradle wrapper 

トラヴィスはgradlewが存在していることを検出し、ビルドを実行するためにそれを使用正しく、最初のラッパータスクを実行します。

ただし、この方法にはビルドを壊す可能性があるという欠点があります。あらかじめインストールされたGradleバージョンの後に実装されたGradleの一部の機能を使用すると、gradle wrapperのステップが失敗します。そのような機能の例は、v2.4で導入されたS3 mavenリポジトリです。

task wrapper(type: Wrapper) { 
    gradleVersion = '3.4.1' 
} 

をまたに.travis.ymlファイルを変更します:

これを防ぐために、あなたは別のビルドファイルへのラッパータスクを移動することができ、のがwrapper.gradleを言わせ

language: java 
jdk: 
    - oraclejdk8 
before_install: 
    gradle -b wrapper.gradle wrapper 

これはそれを行う必要があります。このセットアップでは、あらかじめインストールされたGradleを使用して、メインビルドスクリプトを変更せずにラッパーをインストールします。

example build herethis is the whole GitHub repositoryが表示されます。


注:別の方法があります。 before_installの手順を使用して、ダウンロード可能なディストリビューションから、またはおそらくDebianパッケージシステムを使用して、必要なGradleバージョンをインストールすることができます。しかし、それにはsudo特権が必要です。このような仮想マシンは起動に時間がかかります(約30秒?)。

もう1つのことは、別の回答のコメントで言いました。gradlewスクリプトをコミットすると、ラッパーのjarとプロパティも必要になります。 jarファイルはバイナリファイルであり、それをバージョン管理に入れることは、時には議論の余地があると見なされます。したがって、上記のソリューションを使用する場合は、gradleフォルダーのコミットを省略することもできます。

2

JavaプロジェクトとAndroidプロジェクトの場合、すでにpre-installedですので必須ではありません。

ただし、インストールされたバージョンが、仮想マシンが作成された日付に依存している可能性があります(古くなった可能性があるため)。

gradle --versionコマンドでversionを確認してください。


更新#1

私は私の答えはあなたのMaterialSearchViewをフォーク正しいことを証明した:

Gradleのバージョン2.2.1のGradleラッパーは必須ではありませんが、ので、既にプレインストールされてあなたのプロジェクトにはバージョン2.14.1が必要なので、お勧めの方法です。

script: 
    - gradle clean build 

また、選択された回答が正しいと誤った仮定に基づいていることも示しています。不要なファイルを使用してビルドを中断しても、このファイルは必須ではありません。それを使用せずにchmod行を削除してください。

enter image description here

あなたはあなたのケースで、バージョン2.2.3プラグイン、それぞれのGradleプラグインのバージョンのhere必要なのGradleのバージョンを確認することができますGradleの2.14.1+

+2

推奨事項はスクリプトだけではないことに加えておくことが重要です。 'jar'と' properties'もコミットする必要があります。多くの人は、バイナリファイルをバージョン管理にコミットするのは好きではありません。 – sm4

0

を必要とはい、これらのファイルが必要です。

少し試行錯誤してこれを決めました。私は私の個人的なプロジェクトの1つの支店からそれらを削除し、それらをGitHubにプッシュし、travisビルドは失敗しました。

ログがどのように表示されているのかわからない場合は、check this gist

あなたは底部付近に見ることができるように、これは失敗し、エラーです:

chmod: cannot access `gradlew': No such file or directory 
The command "chmod +x gradlew" failed and exited with 1 during . 

マイナー編集:私はgradlew.batファイルgradlewファイルとそれを使用してみましたが、ありません。これは、単純なクリーン/ビルドのために働いたが、トラヴィスは、エミュレータを起動しようとしたとき、それは10分以上ハング。

TL; DRは両方のファイルを使用します。 gradlewスクリプトをコミット

+0

あなたのCI環境を完全にコントロールしているのであれば、必須ではないかもしれませんが、Travis CIに関しては必須と思われます。テストに感謝します! – Mauker

+0

問題ありません。私は今gradlewファイルでテストしていますが、gradlew.batを使用していないので、すぐに結果で私の答えを編集します。 – AdamMc331

+0

@Mauker私の更新された答えを読んで、将来の読者のためにこれを修正してください。 – albodelu

関連する問題