---
# System prepended metadata

title: '軟工作業01: "Hello, World!" with Maven'
tags: [Software Engineering]

---


## 題目要求

- 用 **Java** 寫 **Hello World**
- 符合對應要求的 ***pom.xml***
    - 必須可以用 **Maven exec plugin** 執行
- 上傳到個人的 **GitLab**，project 名稱沒有規定

## 必要工具

請先安裝好下列工具
- [Git](https://git-scm.com/downloads)
- [Maven](https://maven.apache.org/download.cgi#files)
- [Java 環境](https://www.oracle.com/tw/java/technologies/downloads/)

### 建議設定

這邊建議先對 git 做一些基礎設定

1. 打開 Git Bash，不用切換目錄
    ![](https://i.imgur.com/kJeQWsP.png)

2. 輸入以下指令，`<user_name>` 替換成你在 GitLab 上的名稱
    ```
    git config --global user.name "<user_name>"
    ```
    ![](https://i.imgur.com/hmGwR2O.png)

3. 輸入以下指令，`<email>` 替換成你在 GitLab 上的 email (學校信箱)
    ```
     git config --global user.email "<email>"
    ```
    ![](https://i.imgur.com/1lms2PO.png)

非必要，但建議做的設定
- 輸入以下指令，把預設的 branch name 改成 main
    ```
    git config --global init.defaultBranch "main"
    ```

## 建議操作

以下提供的步驟是我覺得適合新手的做法，但不是唯一解

大家有空可以自己嘗試在每一步使用不同的操作，或是先看過 git, Maven 的教學，再嘗試用不同的方法，觀察不同操作對結果的影響，我覺得會進步得比較快

總之不要怕出錯，錯了重做一次就好，學習使用工具需要經驗累積

### A. 在 GitLab 上建立 Project

1. 進到 [GitLab](https://gitlab-se.ntcu.edu.tw/)，點 "New Project"
    ![](https://i.imgur.com/kXHpyq5.png)

    或是點 "+" >> "New project/repository"
    ![](https://i.imgur.com/9Q5CiJw.png)

2. 選 "Create blank project"
    ![](https://i.imgur.com/lzOunkA.png)

3. 填入 project 名稱(沒有規定，可以任意命名)，建議把 Visibility Level 設成 Public，避免改作業的人看不到你的檔案
    ![](https://i.imgur.com/qxQfNhO.png)
    - 已經開好 Group 的人，記得要把 Project 的所有人改成自己 (預設是 group)
    ![](https://i.imgur.com/jXYeedv.png)

4. 完成
    ![](https://i.imgur.com/RPRzMsa.png)

### B. 把 Remote Repository 複製(Clone)到自己電腦上

1. 點 "Clone" > 複製 "Clone with HTTPS" 的 URL
    ![](https://i.imgur.com/RJM4F2e.png)

2. 打開 Git Bash，並切換到你要存放程式碼的目錄 (用 `cd` 指令)
    ![](https://i.imgur.com/EPJxE2I.png)
    - Win10 或以下，可以在檔案總管，對要打開的目錄點右鍵，選擇 "Git Bash Here"
        ![](https://i.imgur.com/bwyl6bh.png)

3. 輸入以下指令，並把 `<URL>` 替換成你剛剛複製的 URL，在 GitLab 上的 project 就會下載到目前的目錄
    ```
    git clone <URL>
    ```
    ![](https://i.imgur.com/b3eCJU7.png)
    - 在 Bash 中，貼上的快捷鍵是 Shift+Insert，或是右鍵>Paste
        ![](https://i.imgur.com/G0hdnJB.png)
    
    下載完成
    ![](https://i.imgur.com/ZYsebNj.png)
    
    用檔案總管打開目前的目錄，可以看到目錄中有一個和你的 GitLab 專案名稱相同的資料夾
   ![](https://i.imgur.com/lSUQRsh.png)
   
4. 用 `cd <project_name>` 切換到你的專案中 (`<project_name>` 換成你的 GitLab 專案名稱)
    ![](https://i.imgur.com/pWZkWpW.png)

### C. 建立 Maven 專案並設定 Plugin

1. 輸入以下指令 (或複製貼上，Bash 中貼上按 Shift+Ins)
    ```
    mvn archetype:generate \
      -DgroupId=com.mycompany.app -DartifactId=my-app \
      -DarchetypeArtifactId=maven-archetype-quickstart \
      -DarchetypeVersion=1.4 -DinteractiveMode=false
    ```
    ![](https://i.imgur.com/xHsjV8j.png)

    指令完成後會在專案的目錄中新增一個 my-app 目錄，這個目錄就是剛才建好的 Maven 專案，裡面包含已經寫好的 Java 程式碼和 *pom.xml*
    ![](https://i.imgur.com/moRpYYN.png)

2. 用任意的編輯器(記事本, vscode, ...)打開 my-app 中的 pom.xml 檔案，找到 `</plugin>` 和 `</plugins>` 兩個標籤間的位置
    ![](https://i.imgur.com/bOUK2Ql.png)

3. 插入下列內容，以加入 Maven exec plugin
    ```xml
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>exec-maven-plugin</artifactId>
              <version>1.2.1</version>
              <executions>
                <execution>
                  <goals>
                    <goal>java</goal>
                  </goals>
                </execution>
              </executions>
              <configuration>
                <mainClass>com.mycompany.app.App</mainClass>
              </configuration>
            </plugin>
    ```
    ![](https://i.imgur.com/GgP1SvR.png)
    完成後就可以關掉編輯器了

4. 在 Git Bash 中，執行 `cd my-app` 切換到專案目錄中
    ![](https://i.imgur.com/k5NeoEv.png)

### D. 編譯和執行

1. 輸入以下指令編譯 Java 程式碼
    ```
    mvn compile
    ```
    ![](https://i.imgur.com/gvLaQar.png)

2. 輸入以下指令執行程式
    ```
    mvn exec:java
    ```
    ![](https://i.imgur.com/qYHmMIF.png)
    有出現 "Hello World!" 就是成功完成專案了
    ![](https://i.imgur.com/9j747bq.png)

### E. 在 Local Repository 儲存變更

1. 把所有變更加入暫存區中
    ```
    git add .
    ```
    - 如果出現警告訊息，再下一次指令就可以了
        ![](https://i.imgur.com/9pLkKjc.png)

2. 提交 commit，<commit_msg> 可以替換成任意的文字訊息
    ```
    git commit -m "<commit_msg>"
    ```
    ![](https://i.imgur.com/OXenArr.png)

### F. 推(Push)到 Remote Repository

1. 執行以下指令，把目前的專案推到 GitLab 上
    ```
    git push
    ```
    ![](https://i.imgur.com/d67DgW6.png)

2. 在 GitLab 按 F5 重整頁面，可以看到剛剛建立的 my-app
    ![](https://i.imgur.com/5CxPjWM.png)

:::info
:tada: **Congratulation** :tada: 

應該是這樣就可以了~ 我把我知道的都寫上來了，還有問題歡迎去問老師和學長 :+1:

![](https://miro.medium.com/max/1001/1*hHJmhSu7KH06XlMgt6iA-A@2x.jpeg)
:::
