### 建立初始專案
要使用mvn來產生初始的專案,你可以遵循以下步驟:
1. 開啟命令提示字元或終端機。
2. 輸入以下命令來建立一個新的Maven專案:
```
mvn archetype:generate -DgroupId=com.example -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
```
這個命令將會建立一個新的Maven專案,其中groupId為com.example,artifactId為myproject,並且使用maven-archetype-quickstart作為範本。你可以根據自己的需求修改這些參數。
3. 接著,進入新建立的專案目錄:
```
cd myproject
```
現在你就可以開始開發自己的Maven專案了。希望這個步驟對你有所幫助!
### [Out of Memory Build Failure](https://stackoverflow.com/questions/12498738/maven-out-of-memory-build-failure)
```bash
export MAVEN_OPTS="-Xmx3000m"
```
### [Run a Java Main Method in Maven](https://www.baeldung.com/maven-java-main-method)
```bash
mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec"
mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" \
-Dexec.args="First Second"
```
自定義可執行的 Java 檔於 pom.xml
```xml
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>com.baeldung.main.Exec</mainClass>
</configuration>
</plugin>
</plugins>
</build>
```
```bash
mvn compile exec:java
```
### 常用指令
```bash
# Spring Boot 啟動應用程式
mvn spring-boot:run
# 列出所有依賴套件
mvn dependency:list
mvn dependency:tree
```
### scope
Maven的scope指定了依賴的範圍,它表示在什麼情況下需要使用這個依賴項。以下是Maven中scope的幾種取值:
* compile: 這是默認值,表示當前項目在任何情況下都需要使用這個依賴項,包括在編譯、測試和運行階段。
* provided: 表示當前項目在編譯和測試階段需要使用這個依賴項,但是在運行階段不需要,因為它已經由JDK或者容器提供了。
* runtime: 表示當前項目在運行階段需要使用這個依賴項,但是在編譯和測試階段不需要。
* test: 表示當前項目在測試階段需要使用這個依賴項,但是在編譯和運行階段不需要。
* system: 表示需要使用這個依賴項,但是它沒有被放置在Maven的repository中,而是需要手動指定路徑。
* import: 這個scope只能在dependencyManagement節點中使用,表示將來會被import進來的項目。
使用scope可以幫助Maven管理依賴項,避免在不需要使用某些依賴項時浪費資源。
### 略過單元測試
```bash
mvn install -DskipTests
```
### [How to directly upload a jar file to nexus repository](https://stackoverflow.com/questions/57467556/how-to-directly-upload-a-jar-file-to-nexus-repository-using-maven-without-pom-fi)
```
mvn deploy:deploy-file \
-DgroupId=com.example.test \
-DartifactId=test-module \
-Dversion=1.0.0 \
-DgeneratePom=true \
-Dpackaging=jar \
-DrepositoryId=sample-rel \
-Durl=http://nexus.private.net/Your_Nexus_Repository_Path \
-Dfile=./PATH_TO_JAR_FILE
```
### deploy to nexus
這裡是一個可以上傳到您的 Nexus repository 的範例 pom.xml 檔案:
```xml
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://your-nexus-repository/releases</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://your-nexus-repository/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</build>
</project>
```
請確保將此範例 pom.xml 檔案中的 `groupId`、`artifactId` 和 `version` 替換為您的專案相應的值,並將 `url` 替換為您 Nexus 倉庫的正確位置。您也可以根據需要調整其他配置。希望這可以幫助您成功上傳到您的 Nexus 倉庫。
您可以在 settings.xml 檔案中新增一個 `<server>` 標籤,並在該標籤中設定您的帳號和密碼。例如:
```xml
<servers>
<server>
<id>your-server-id</id>
<username>your-username</username>
<password>your-passwordr</password>
</server>
</servers>
```
請將 `your-server-id` 替換為您的伺服器識別碼,`your-username` 替換為您的帳號,`your-password` 替換為您的密碼。這樣設定就可以讓 Maven 或其他工具在與該伺服器進行通訊時使用這組帳號密碼。
---
# 搭配 alternatives 做升級且可切換
Apache Maven 是一個流行的軟體專案管理和理解工具,專門用於建構和管理 Java 相關的專案。在 Linux 系統中,你可以手動安裝 Maven 並透過 `update-alternatives` 來管理不同的 Maven 版本。以下是自行安裝 Maven 並配置多個版本的步驟:
### 步驟 1: 下載 Maven
首先,你需要從 Apache Maven 官方網站下載所需要的 Maven 版本。訪問 [Maven Download Page](https://maven.apache.org/download.cgi),選擇合適的版本下載,例如 Maven 3.8.4。
### 步驟 2: 解壓縮 Maven
下載完成後,將檔案解壓縮到適當位置。例如,你可以解壓到 `/opt` 目錄下:
```bash
sudo tar -xvf apache-maven-3.8.4-bin.tar.gz -C /opt
```
### 步驟 3: 設定環境變數
為了方便使用 Maven,你應該設定環境變數。可以將以下內容新增到你的 shell 配置檔案中,如 `.bashrc` 或 `.zshrc`:
```bash
export M2_HOME=/opt/apache-maven-3.8.4
export PATH=$M2_HOME/bin:$PATH
```
之後,請重新加載配置檔案,以使更改生效:
```bash
source ~/.bashrc # 或 source ~/.zshrc
```
### 步驟 4: 使用 `update-alternatives` 配置 Maven
若你想安裝多個 Maven 版本,並能夠輕鬆切換,可以使用 `update-alternatives` 命令。首先,使用 `update-alternatives` 加入每個 Maven 版本:
```bash
sudo update-alternatives --install /usr/bin/mvn mvn /opt/apache-maven-3.8.4/bin/mvn 1
```
假如你有另一個版本的 Maven,比如 3.6.3,已經安裝於 `/opt/apache-maven-3.6.3`,則可以這樣加入:
```bash
sudo update-alternatives --install /usr/bin/mvn mvn /opt/apache-maven-3.6.3/bin/mvn 2
```
這裡的數字 `1` 和 `2` 代表優先級,數字越大是優先級越高。
### 步驟 5: 切換 Maven 版本
你可以使用下面的命令來切換 Maven 版本:
```bash
sudo update-alternatives --config mvn
```
這個命令會列出所有已安裝的 Maven 版本並讓你選擇使用哪一個。
以上就是在 Linux 系統中自行安裝和配置 Maven 的步驟。通过這些步驟,你可以靈活管理並切換不同的 Maven 版本來適應不同的專案需求。