2016-10-04 7 views
0

これまでに約21の異なる言語で1000を超えるプロジェクトを構築しています。私たちはこれにgradleを使用しており、問題があります。私たちはgitlabサーバーに移行していますが、ソースやリポジトリにjarファイルや他のライブラリをコミットすることを明示的に禁止するシステムやフックを構築するための支出週間が終わりました。 (長い長い話、どうしてもあなたは本当に気にしません)。 瓶のないグラードラッパー

今、私たちは gradle/wrapperフォルダ内のjarファイルなしでGradleのラッパーを使用するにはどうすればよいの問題

?私は正確にgitフックが行うと、フォルダを削除しようとしたとgradlew私はクラスが私たちが期待するようなエラーが見つかりません。

jarを付けずにラッパーを使用することは可能ですか、またはユーザーはプロジェクトをクローンするときにラッパーを再利用する必要がありますか? gradlewファイルがgradle/wrapperフォルダまたはjarファイルが見つからない場合に自動的に再生成するように設定できますか?そこで、基本的

答えて

0

、ときにセットアップラッパー

gradle wrapper 

を経由して、あなたは置く:

  • 性質を

    • スクリプト
    • のGradleラッパーのjarファイル

    を現在のプロジェクトディレクトリにコピーします。 gradle-wrapper.jarは、ローカルのGradleディストリビューションから提供されます。 You can check this in the source code

    URL jarFileSource = Wrapper.class.getResource("/gradle-wrapper.jar"); 
    if (jarFileSource == null) { 
        throw new GradleException("Cannot locate wrapper JAR resource."); 
    } 
    GFileUtils.copyURLToFile(jarFileSource, jarFileDestination); 
    

    あなたがgradle wrapperを実行すると、あなたはGradleのをダウンロードして実行するために、そのjarファイルからメインクラスを呼び出します。技術的には、SHとBASHスクリプトを修正して、Java実行前のGithubリポジトリからラッパーファイルをダウンロードすることができます(明らかにファイルが存在しない場合のみ)。私は実際にそれを行い、それは働いた、しかし、私はエラーが発生する可能性がありますどのように確認することはできません。 Githubが今後URLを変更しないかどうかはわかりません。私はちょうどgradlew.shのどこかに次のスニペットを追加しました。 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jarラインとにかく

    if [ ! -f "gradle/wrapper/gradle-wrapper.jar" ] 
    then 
        curl https://raw.githubusercontent.com/gradle/gradle/master/gradle/wrapper/gradle-wrapper.jar -o $APP_HOME/gradle/wrapper/gradle-wrapper.jar 
    fi 
    

    前に、ラッパーファイルが56Kを持っており、それは人々がGitのリポジトリにそれを置くことができるようにできるだけ小さくなるように設計されました。つまり、単にGradleWrapperMainを呼び出すよう

  • +0

    ありがとう、私はこのショットを与えるでしょう。私たちは内部のdistサーバから配布するので、うまくいくでしょう。ラッパースクリプトを少し読んで、多分私はそれを何かに移植することができます。もう一つのアイデアはクローンフックで、もしそこにgradlewファイルがあるのか​​どうかを検出し、クローンでそれを再生した。私は遊ぶだろう、それが何を参照してください。そして、私たちは、ここで長い間虐待を受けている習慣があり、ホワイトリストのないジャーフィルターシステムを特別に設計しました。 – scphantm

    0

    gradlewスクリプトがgradle-wrapper.jarに依存し、私はあなたがそれを心配することと、ちょうどあなたのフックにホワイトリストに登録され、リポジトリにそれを許可するには、この特定のJARファイルを追加してはならないと信じて、言われていますJARからしたがって、JARなしでラッパースクリプトを使用することはできません。ただし、this scriptを使用してラッパーを「ブートストラップ」することはできます。