[JAWS-UG CLI] CodeBuild: #1 ソースコードの作成 (Java)

参考: http://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html

前提条件
========

- gitコマンドが実行できること。


0. 準備
=======

特になし

1. 事前作業
===========


1.1. 作業用ディレクトリの指定
-----------------------------

```bash:変数の設定:
DIR_WORK="${HOME}/src-codebuild-demo-java"
```


1.2. 作業用ディレクトリの作成、移動
-----------------------------------

```bash:コマンド:
mkdir -p ${DIR_WORK}/src/{main,test}/java \
        && cd ${DIR_WORK}/
```


2. ソースコードの作成
=====================


2.1. メインプログラムの作成
---------------------------

```bash:コマンド:
FILE_INPUT='src/main/java/MessageUtil.java'
```

```bash:コマンド:
cat << EOF > ${FILE_INPUT}
public class MessageUtil {
  private String message;

  public MessageUtil(String message) {
    this.message = message;
  }

  public String printMessage() {
    System.out.println(message);
    return message;
  }

  public String salutationMessage() {
    message = "Hi!" + message;
    System.out.println(message);
    return message;
  }
}
EOF

cat ${FILE_INPUT}
```


2.2. テストコードの作成
-----------------------

```bash:コマンド:
FILE_INPUT='src/test/java/TestMessageUtil.java'
```

```bash:コマンド:
cat << EOF > ${FILE_INPUT}
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestMessageUtil {

  String message = "Robert";
  MessageUtil messageUtil = new MessageUtil(message);

  @Test
  public void testPrintMessage() {
    System.out.println("Inside testPrintMessage()");
    assertEquals(message,messageUtil.printMessage());
  }

  @Test
  public void testSalutationMessage() {
    System.out.println("Inside testSalutationMessage()");
    message = "Hi!" + "Robert";
    assertEquals(message,messageUtil.salutationMessage());
  }
}
EOF

cat ${FILE_INPUT}
```


2.3. Moven用構成情報の作成
--------------------------

```bash:コマンド:
FILE_INPUT='pom.xml'
```

```bash:コマンド:
cat << EOF > ${FILE_INPUT}
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>messageUtil</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <name>Message Utility Java Sample App</name>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
EOF

cat ${FILE_INPUT}
```

```bash:コマンド:
xmllint --noout ${FILE_INPUT}
```

何も表示されなければOKです。


3. 事後作業
===========


3.1. リポジトリの作成
---------------------

```bash:コマンド:
git init
```


3.2. メールアドレスの指定
-------------------------

```bash:変数の設定:
GIT_ADDR='<メールアドレス>'
```

```bash:コマンド:
git config --global user.email "${GIT_ADDR}"
```


3.3. ユーザ名の指定
-------------------

```bash:変数の設定:
GIT_NAME='Your Name'
```

```bash:コマンド:
git config --global user.name "${GIT_NAME}"
```


3.4. リポジトリへの追加
-----------------------

```bash:コマンド:
git add .
```


3.5. 最初のコミット
-------------------

```bash:コマンド:
git commit -m 'created repository.'
```

```bash:コマンド:
git log
```

結果(例):

      commit 95d8522773831827702fe9841aff4c33acb7f514
      Author: Your Name <you@example.com>
      Date:   Sun Apr 17 12:38:37 2017 +0000

          created repository.


完了
====