Maven概述

Maven下載地址maven.apache.org/

Maven安裝及配置

將下載的壓縮包解壓,並配置環境變量css

  1. 新建環境變量M2_HOME,變量值爲:Maven解壓路徑;
  2. 在環境變量PATH中,在結尾處新增%M2_HOME%\bin;
  3. 在DOS窗口中,執行mvn -v命令查看是否配置成功

代理配置

在~/.m2/setting.xml中進行配置,配置以下:java

<proxies>
    <proxy>
        <!-- 惟一標識 -->
        <id></id>
        <!-- 是否激活 boolean -->
        <active></active>
        <!-- 代理協議,一般使用HTTP -->
        <protocol></protocol>
        <!-- 主機名 -->
        <host></host>
        <!-- 端口 -->
        <port></port>
        <!-- 認證用戶名 -->
        <username></username>
        <!-- 認證密碼 -->
        <password></password>
        <!-- 設置不須要代理的域名 -->
        <nonProxyHosts></nonProxyHosts>
    </proxy>
</proxies>
複製代碼

Maven倉庫

中央倉庫地址: repo1.maven.org/maven2
設置本地倉庫地址web

在setting.xml中設置
<localRepository></localRepository>
複製代碼

遠程倉庫配置請參考代碼 遠程倉庫認證信息配置以下:apache

在setting.xml中配置
<servers>
    <server>
        <!-- pom文件中遠程倉庫的ID -->
        <id></id>
        <!-- 用戶名 -->
        <username></username>
        <!-- 密碼 -->
        <password></password>
    </server>
</servers>
複製代碼

Maven鏡像

如需配置鏡像服務,則在setting.xml中配置以下app

<mirrors>
    <mirror>
        <!-- 鏡像地址惟一標識 -->
        <id></id>
        <!-- 鏡像描述 -->
        <name></name>
        <!-- 鏡像地址 -->
        <url></url>
        <!-- 鏡像代理地址,經過ID表示,*表示全部 -->
        <mirrorOf></mirrorOf>
    </mirror>
</mirros>
複製代碼

Maven元素

<project>
    <!-- 固定值 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 所屬項目,必選 -->
	<groupId>com.xxx</groupId>
	<!-- 模塊名稱,必選 -->
	<artifactId>xxx</artifactId>
	<!-- 版本,SNAPSHOT表示快照,必選 -->
	<version>0.0.1-SNAPSHOT</version>
	<!-- 打包方式,默認爲jar,可選 -->
	<packaging>jar</packaging>
    
	<name></name>
	<url>http://maven.apache.org</url>
        <!-- 若是須要引用父maven,則使用以下標籤 -->
	<parent>
            <groupId></groupId>
            <artifactId></artifactId>
	    <version></version>
	    <!-- 父類pom文件相對位置,默認爲../pom.xml,即在上一層目錄中 -->
	    <relativePath></relativePath>
	</parent>
        <!-- 屬性 -->
	<properties>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
	    <dependency>
            <!-- 依賴的jar包groupId -->
	        <groupId></groupId>
		<!-- 依賴的jar包artifactId -->
		<artifactId></artifactId>
		<!-- 依賴的jar包版本號 -->
		<version></version>
		<!-- 依賴的範圍 -->
		<scope></scope>
		<!-- 標記依賴是否可選,true表示該依賴只對當前項目有效,不會傳遞 -->
		<optional></optional>
		<!-- 排除傳遞依賴 -->
		<exclusions>
		    <exclusion>
		        <groupId></groupId>
			<artifactId></artifactId>
		    </exclusion>
		</exclusions>
	    </dependency>
	</dependencies>
        <!-- 遠程倉庫配置 -->
	<repositories>
	    <repository>
                <!-- 遠程倉庫惟一標識 -->
		<id></id>
		<!-- 遠程倉庫描述 -->
		<name></name>
		<!-- 遠程倉庫地址 -->
		<url></url>
		<!-- 遠程倉庫發佈版本下載支持 -->
		<releases>
		    <enabled>true</enabled>
		</releases>
		<!-- 遠程倉庫快照版本下載支持 -->
		<snapshots>
		    <enabled>false</enabled>
		</snapshots>
	    </repository>
	</repositories>
	<!-- 遠程插件倉庫配置 -->
	<pluginRepositories>
	    <pluginRepository>
		<id></id>
		<name></name>
		<url></url>
	    </pluginRepository>
	</pluginRepositories>
	<build>
	    <plugins>
		<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-compiler-plugin</artifactId>
		    <version>3.5.1</version>
		    <configuration>
		        <source>1.7</source>
			<target>1.7</target>
			<encoding>UTF-8</encoding>
		    </configuration>
	        </plugin>
	    </plugins>
        </build>
</project>
複製代碼

Maven資源過濾及構建

便可以使用Maven中的屬性值替換配置文件中的值webapp

Maven屬性

  • 內置屬性,示例
    ${basedir}:項目根目錄
    ${version}:項目版本號
  • pom屬性,示例
    ${project.build.sourceDirectory}:項目主源碼目錄
    ${project.artifactId}:項目的artifactId
  • 自定義屬性
  • Java系統屬性,經過mvn help:system查看全部的Java系統屬性
  • 環境變量屬性,以env.開頭的屬性引用
  • setting屬性,經過settings.開頭引用xml元素的值

Maven資源過濾

在pom.xml中配置以下maven

<!-- 資源文件過濾 -->
<build>
    <resources>
        <resource>
            <!-- 資源路徑 -->
            <directory></directory>
            <filtering>true</filtering>
            <!-- 排除的資源文件 -->
            <excludes>
	        <exclude>src/main/filter</exclude>
	    </excludes>
        </resource>
    </resources>
</build>
<!-- 針對不一樣環境的不一樣配置 -->
<profiles>
    <profile>
        <id>dev</id>
        <!-- 配置的屬性值 -->
        <properties></properties>
        <!-- 默認激活 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <!-- 針對單個profile資源過濾 -->
        <build>
            <filters>
	        <filter>src/main/filter/dev_filter.properties</filter>
	    </filters>
        </build>
    </profile>
</profiles>
複製代碼

Maven聚合

新建項目,之包含pom.xml,其中<packaging>元素設置爲pom,在聚合中,最主要的元素爲ui

<modules>
    <!-- 聚合的模塊名稱 -->
    <module></module>
        ...
    <module></module>
</modules>
複製代碼

Maven繼承

繼承與聚合同樣,<packaging>元素設置爲pom,子pom若是須要繼承父pom中的元素,則在子pom中配置<parent>元素,具體參考配置,可繼承的元素以下:url

  • groupId 項目組ID
  • version 版本信息
  • description 項目描述
  • organization 項目組織信息
  • inceptionYear 創始年份
  • url 項目Url地址
  • developers 開發者信息
  • contributors 貢獻者信息
  • distributionManagement 部署配置
  • issueManagement 缺陷跟蹤系統信息
  • ciManagement 持續集成系統信息
  • scm 版本控制系統信息
  • mailingLists 郵件列表信息
  • properties 自定義屬性
  • dependencies 依賴配置
  • dependencyManagement 依賴管理配置
  • repositories 倉庫配置
  • build 項目構建信息
  • reporting 項目報告輸出配置

在父模塊中,元素<dependencyManagement>既能讓子模塊繼承到父模塊的依賴配置,又能保證子模塊依賴使用的靈活性,由於該元素下的依賴聲明不會引入實際的依賴,不過它可以約束dependencies的依賴使用,即子類要重寫父依賴的groupId和artifactId元素spa

Maven經常使用插件

編譯插件

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <!-- 支持的java版本 -->
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-resources-plugin</artifactId>
	    <version>2.6</version>
	    <configuration>
	        <encoding>UTF-8</encoding>
	    </configuration>
        </plugin>
        <!-- 對web資源進行過濾 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1-beta-1</version>
            <configuration>
                <webResources>
                    <resource>
                        <filtering>true</filtering>
                        <directory>src/main/webapp</directory>
                        <!-- 過濾的目錄 -->
                        <includes>
                            <include>* */*.css</include>
                            <include>* */*.js</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>
複製代碼

Maven經常使用命令

mvn dependency:list 查看當前項目已解析依賴
mvn dependency:tree 查看當前項目依賴樹
mvn dependency:analyze 分析當前項目依賴樹\

Maven私服全局配置

在setting.xml配置鏡像,同時配置私服地址以下

<profiles>
    <profile>
        <id>nexus</id>
        <!-- 以下配置請參考Maven元素遠程倉庫配置 -->
        <repository>
        </repository>
    </profile>
</profiles>
<!-- 激活的私服ID -->
<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeprofiles>
複製代碼
相關文章
相關標籤/搜索