### 建立初始專案
要使用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 或其他工具在與該伺服器進行通訊時使用這組帳號密碼。