Maven
Maven官網:https://maven.apache.org/
Apache Maven 是一個軟件項目管理和理解工具。基於項目對象模型 (POM) 的概念,Maven 可以從一條中央信息中管理項目的構建、報告和文檔。
主要用來生成、導入和配置jar包,在Maven 中約束大於配置 目錄結構必須按照規範
Maven安裝
官網下載安裝包解壓即可
Maven配置環境變量
windows中配置maven環境變量
mac下環境變量配置(這裏後面方便項目搭建 換成了3.6.3的版本)
# Maven 3.8.1 START
export M2_HOME=/Users/bjdzbjba0152/Desktop/javacode/enviorment/apache-maven-3.8.1
export PATH=$PATH:$M2_HOME/bin
# Maven 3.8.1 END
# Maven 3.6.3 START
export M2_HOME=/Users/bjdzbjba0152/Desktop/javacode/enviorment/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin
# Maven 3.6.3 END
Maven配置aliyun鏡像
配置文件位於 conf/settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
Maven本地倉庫
<localRepository>/Users/b/Desktop/javacode/enviorment/apache-maven-3.8.1/maven-repo</localRepository>
從鏡像拉取包
mvn help:system
最後沒有報錯說明安裝就沒問題了
IDEA中使用Maven
創建一個Maven項目
next,不選自帶的,選擇剛纔下載的3.8.1
點擊finish就ok了
打開Preference
可以看下關於maven的相關配置,因爲有時IDEA會自動使用默認的Maven,如果出現類似情況需要手動改一下
關於其他幾項配置
importing
Ignored Files
Runner
Repositories
本地倉庫
創建一個普通的Maven項目
Maven純淨項目概覽
Maven項目配置Tomcat
在run=>Edit Configurations
設置基礎信息
解決fix報錯內容,添加一個artifact即可。下面的Application context可寫可不寫,是指定路由的
點擊+無artifact解決:
打開Project Structure ==> 選擇Artifacts ==> Web Application:Exploded
選擇自己的項目就好了
回到Edit Configurations,就已經出現了Artifact...選項了
Maven側邊欄
Maven中的pom.xml
pom.xml是maven的核心配置文件,注意<dependencies>
這裏可以根據遠程倉庫選擇自己的依賴jar包,只要在配置文件加入該包的<dependency>
Maven即可自動導入該jar包也包括這個jar包所依賴的其他jar包。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<!--Maven版本和頭文件-->
<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>
<!--GAV配置(group id,artifact id, version)-->
<groupId>com.zh1z3ven</groupId>
<artifactId>javawebTestDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 項目打包方式
jar: java應用
war: javaweb應用
-->
<packaging>war</packaging>
<!--項目名稱(可刪)-->
<name>javawebTestDemo Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--配置-->
<properties>
<!-- 項目默認構建編碼-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 項目默認編譯版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 項目依賴-->
<dependencies>
<!-- 具體依賴jar包配置-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 項目構建用的東西-->
<build>
<finalName>javawebTestDemo</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Maven觀察jar包依賴樹
關於Maven導出問題
由於Maven約定大於配置,我們之後可能遇到我們寫的配置文件無法導出或生效
解決方法:在build下面加一個resource,配置一個resource節點,防止資源導出失敗
因默認在java目錄下,根據maven的約束只能寫java文件,如果這時該目錄存在xml文件則無法導出
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>