Graadle:より良い構築ツール


--------------------------------------------------------
Graadle–A better way to build
原文のURL:http://techblog.chegg.com/2011/04/29/gradle-a-better-way-to-build/
エリックBerry@Chegg's Entineering team
2011年4月29日
訳文:Graadle:より良い構築ツール
訳文URL:http://blog.csdn.net/yapingxin/article/details/36643877
訳文:辛亜平@Honeywell Aerospace
訳文日:2014年7月3日
--------------------------------------------------------
エリックBerryと申します。パサディナ市のChegg(以前はCramsterと呼ばれていました)プロジェクトチームから来たベテランのソフトウェアエンジニアです。この文章では、最近のシステム構築の決定に関する簡単な要約を共有したいと思います。最近私たちはJava開発プロジェクトを開始しました。異なる利用可能な構築システムを評価しています。私達のC〓〓の開発プロジェクトの採用したMSBuildは明らかに適用しません。MavenとAntには多くの使用経験があり、それらの長所と短所をよく知っているので、システム陣営を構築する新丁・Gradeを紹介します。
Graadleは何ですか
GraadleはGrouvyで作成した比較的新しい構築システムである。Grouvyに慣れていないなら、簡単に言えば、Java仮想マシン(JVM)に基づくトップクラスの動的プログラミング言語であり、Javaプログラミング言語に対して、多くのプログラミング近道を提供しています。GraadleはGrouvyの偉大な利点から恩恵を受けています。これはあなたの構築文書が非常に簡潔で読みやすくなることを意味します。
依存管理
開発者がMavenを推賞する最大の理由は、管理に依存することである。以下の例は、最も基本的な単一のJUnitに対する依存性を持つJavaプログラムのMaven POMファイルが見られます。

    4.0.0
    com.mycompany.app
    my-app
    jar
    1.0-SNAPSHOT
    
        
            junit
            junit
            3.8.1
            test
        
    
等価Graadle構築スクリプト:
apply plugin: "java"
group = "com.mycompany.app"
archivesBaseName = "my-app"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    testCompile "junit:junit:3.8.1"
}
MavenとGradeの配置ファイルの違いは、行数の違いではなく(Mavenは17行を使い、Gradeは10行を使いました)、これは強制的なものではありません。どちらが読みやすいですか?工程の成長と相関依存性が増すにつれて,Grandleがあなたに提供するより良い可読性が現れ始めます。
タスクを構築
GradeはAntと同様に構築タスクを処理します。Antでは、次のような簡単なタスクが書かれるかもしれません。


    
        Hello World
    
Graadleのタスクは同じです。
task hello << {
    println "Hello World"
}
この両者の間には再び大きな違いが現れている。私の考えでは、「括弧負担」を避けるのは確かにコードをより明確にして読みやすいです。
融通性
あなた達の中には「なぜAntを使い続けないのですか?」Antで何でもできますし、Ivyに合わせて、管理に頼ることができます。はい、あなたは正しいです。
しかし、GraadleもIvyを使って依存関係を管理していますので、Ivyの強大さと柔軟性の利点を得ることができます。これらは一つの独立したビルディングファイルに含まれています。余分なものはありません。 ivy.xmlまたはivysettings.xmlファイルです。
Antは本当に柔軟です。例外を除いて、Antがサポートできない解決策を見つけるのは難しいです。Graadleでシナリオを構築するのはGrouvyで書いたので、誇張しないで言って、それはコードです。これはアントよりも多くの仕事ができるという意味です。書くことができれば、Gradeはそれを実行できます。
task time << {
    int hours = new Date().hours
    switch (hours) {
        case 0..11:
            println "Good Morning! It’s ${hours}am."
            break

        case 12..17: // noon to 5pm
            println " Good Afternoon! It’s ${hours > 12 ? hours – 12 : hours}pm."
            break

        default: // 6pm to 11pm

            println "Good Evening! It’s ${hours – 12}pm. Shouldn’t you be going home?"
    }
}
拡張性
あなたが見ているように、GradeのDSL(特定の分野のプログラミング言語)とGrouvyへの応用によって、どんなこともできます。これは同時にGraadle自身にも強い拡張性を持たせる。あなた自身のタスクを作成するのは非常に簡単です。また、あなたが協力して開発した開発者にあなたのタスクを使用してもらいたい場合、自分のGraadleプラグインを作成するのも簡単です。これは必要なプラグインを書いた人がいるかもしれません。
コミュニティ
GraadleはJavaとGrouvyのコミュニティの中で急速に非常に流行しています。そして、ハイバーナーとGrairlsを含むいくつかのヘビー級のプッシュ者がいます。強大なGraadle社区のほかに、Gradeleware Inc.社が私達にGraadleと専門の支持を持ってきてくれます。
結論
Graadleは私達が持ってきた簡潔、柔軟性、拡張性がないので、私達は非常に迅速に私達のプロジェクトを構成して構築することができます。これはシステムを構築する上でより少ない時間を費やし、コードを書く上でより多くの時間を投入することを意味します。私たちは非常に満足しています。私たちの決定は本論文と他の人の実践に基づいて、あなたがあなたの構築ニーズの中でGradeを使用することができます。構築が楽しい!