トゥーデル


1. Build


ビルとは、以下の動作を実行する作業を指す.

  • 必要なライブラリをダウンロードして*classpathに追加

  • ソースコードのコンパイル

  • テストの実行

  • パッケージ化されたコード(jar、war、zipなど)

  • カプセル化されたファイルをコンポーネントと呼び、サーバまたはリポジトリに配置します.
  • *classpath:カスタムクラスとAPIパッケージのパスを指定するJava仮想マシンまたはJavaコンパイラのパラメータ

    2. Build Tool


  • 手動で構築して実行するプロセスは本当に面倒です.このプロセスを自動化するために、構築ツールを設計しました.
    ex) Ant, Maven, Gradle

  • Javaでは以前はMavenが広く使われていましたが、現在では多くの言語をサポートするGradleが登場し、最近はGradleが広く使われています

  • 構築ツールは、プロジェクトに必要なxml、properties、jarなどのファイルを識別し、構築し、実行可能なアプリケーションとしてコンパイルおよびテストします.

  • プロジェクト情報管理、テスト構築、導入などの作業も可能
  • 3. Gradle


    溝を使用した自動化システムの構築

  • ケルピー:ダイナミックオブジェクト向けプログラミング言語、JavaにPython、Rubyなどの特性を追加
    https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EA%B7%B8%EB%A3%A8%EB%B9%84

  • 最近はKotlinもサポートしています

  • Gradleの公式ドキュメントには、Gradleの特徴が記載されています.
    https://docs.gradle.org/current/userguide/what_is_gradle.html
  • 高性能:Mavenより速く、スクリプトが簡潔
  • JVMベース:Gradleを使用するには、JVM
  • をインストールする必要があります.
  • 拡張性:複数のプラグイン
  • をサポート
  • IDEサポート:Gradleをサポートする複数のIDE;Android Studioは基本構築ツール
  • です.

    3-1. 設定

  • macでは、homebrew、window、Linuxのsdkパッケージマネージャで
  • を簡単にインストールできます.
    $ sdk install gradle
    $ brew install gradle

    3-2. 実行


    3-2-1. 階層アイテムの作成

    $ gradle init  # gradle로 프로젝트 생성. 몇가지 설정들을 선택해주면 된다 
    $ tree  # 기본 gradle 생성 자바 프로젝트는 다음과 같은 구조를 가진다 
    ├── app  # 기본 프로젝트 명 
    │   ├── build.gradle  # 빌드 스크립트를 작성하는 곳 
    │   └── src  # 소스 코드
    │       ├── main  # 프로그램 코드
    │       │   ├── java
    │       │   │   └── com
    │       │   │       └── programmers
    │       │   │           └── java
    │       │   │               └── App.java
    │       │   └── resources
    │       └── test  # 테스트 코드
    │           ├── java
    │           │   └── com
    │           │       └── programmers
    │           │           └── java
    │           │               └── AppTest.java
    │           └── resources
    ├── gradle  # gradle 실행을 위한 런타임 
    │   └── wrapper
    │       ├── gradle-wrapper.jar
    │       └── gradle-wrapper.properties
    ├── gradlew
    ├── gradlew.bat
    └── settings.gradle  # gradle 설정 파일 
    

    3-2-2. 構築と実行

    $ gradle build
    Starting a Gradle Daemon (subsequent builds will be faster)
    
    BUILD SUCCESSFUL in 5s
    7 actionable tasks: 7 up-to-date
    
    $ gradle run
    > Task :app:run
    Hello World!
    
    BUILD SUCCESSFUL in 725ms
    2 actionable tasks: 1 executed, 1 up-to-date
    

    3-2-3. タスク#タスク#

  • gradleでは、作業単位がタスクです.上のbuildやrunなどもミッションです.build.gradleファイルには、これらのタスクが記述されています.
  • (...생략...)
    
    tasks.named('test') {
        // Use JUnit Platform for unit tests.
        useJUnitPlatform()
    }
  • 2gradle initでアプリケーションが選択されている場合、プラグインはアプリケーションを追加し、次のタスクを自動的に登録します:
  • $ gradle tasks
    > Task :tasks
    
    ------------------------------------------------------------
    Tasks runnable from root project 'HelloWorld'
    ------------------------------------------------------------
    
    Application tasks
    -----------------
    run - Runs this project as a JVM application
    
    Build tasks
    -----------
    assemble - Assembles the outputs of this project.
    build - Assembles and tests this project.
    buildDependents - Assembles and tests this project and all projects that depend on it.
    buildNeeded - Assembles and tests this project and all projects it depends on.
    classes - Assembles main classes.
    clean - Deletes the build directory.
    jar - Assembles a jar archive containing the main classes.
    testClasses - Assembles test classes.
    
    Build Setup tasks
    -----------------
    init - Initializes a new Gradle build.
    wrapper - Generates Gradle wrapper files.
    
    Distribution tasks
    ------------------
    assembleDist - Assembles the main distributions
    distTar - Bundles the project as a distribution.
    distZip - Bundles the project as a distribution.
    installDist - Installs the project as a distribution as-is.
    
    Documentation tasks
    -------------------
    javadoc - Generates Javadoc API documentation for the main source code.
    
    Help tasks
    ----------
    buildEnvironment - Displays all buildscript dependencies declared in root project 'HelloWorld'.
    dependencies - Displays all dependencies declared in root project 'HelloWorld'.
    dependencyInsight - Displays the insight into a specific dependency in root project 'HelloWorld'.
    help - Displays a help message.
    javaToolchains - Displays the detected java toolchains.
    outgoingVariants - Displays the outgoing variants of root project 'HelloWorld'.
    projects - Displays the sub-projects of root project 'HelloWorld'.
    properties - Displays the properties of root project 'HelloWorld'.
    tasks - Displays the tasks runnable from root project 'HelloWorld' (some of the displayed tasks may belong to subprojects).
    
    Verification tasks
    ------------------
    check - Runs all checks.
    test - Runs the unit tests.
    
    To see all tasks and more detail, run gradle tasks --all
    
    To see more detail about a task, run gradle help --task <task>
    

    3-2-4. Injellij IDEAからのGradle

  • のアイデアは基本的にGradleを支持しています.プロジェクト生成時にgradeプロジェクト
  • を生成しやすいように選択する.
  • コードが実行時にgradeで実行されていることがわかります.

  • 4.Gradleによる外部依存の管理


  • Pythonでpipを使用して外部ライブラリをインストールするように、Gradleで構築します.gradeのリポジトリと依存項目の設定でインストールできます.

  • 次のコンストラクション.Gradleの一部では、MavenCentral Repoの外部依存項目がいくつか導入されます.
  • repositories {
        mavenCentral()
    }
    
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
        implementation 'com.github.javafaker:javafaker:1.0.2'
    }
    import com.github.javafaker.Faker;
    
    public class Main {
        public static void main(String[] args) {
            // 데모 등을 위해 다양한 랜덤 값을 생성하는 클래스
            Faker faker = new Faker();
    
            // 직함 생성
            String title = faker.name().title();
            System.out.println(title);
        }
    }
    

    サポートされているハウジング


    残念ながら私は今fishをサポートしていません😢 POSIX対応のShellのみがサポートされているようですが、後でgradeを直接実行する作業がたくさんある場合はzshをインストールする必要があります.