JAVA基础--Maven的简单应用

      在项目开发过程当中,只要依赖第三方库的必定会使用到Maven,那么Maven究竟是什么,该怎么使用,可能对咱们来讲就不是特别的清楚; 此次就来看看我整理的一些Maven简单用法;html

    1, Maven介绍:apache

            maven是用于构建和管理任何JAVA项目的工具;tomcat

    2, Maven的目标:  服务器

           让开发人员在最短的时间内了解开发工做的完整状态;框架

    好了好了,这些废话就先到这里;须要详细了解的能够访问其官网:maven

    http://maven.apache.org/what-is-maven.htmlide

    3, 从官网上将Maven下载下来:工具

        (1),   MAVEN目录说明:post

            bin     :  包含mvn的运行脚本; 在cmd中输入mvn调用该目录;
            boot  :  包含类加载器的框架, mvn使用它加载本身的类库;
            conf   :  配置文件目录;
            lib      :  包含自身和第三方的类库;测试

        (2),   环境变量配置:
            M2_HOME
            D:\Maven\apache-maven-3.5.2

            Path中加入:
            %M2_HOME%\bin

            验证: cmd中:  mvn -v 

        (3),  项目编译: 
        在项目目录下: 
        mvn -v       : 查看Maven版本
        mvn compile  : 项目编译
        mvn test         : 项目测试
        mvn package  : 打包jar
        mvn clean    : 删除target
        mvn install  : 安装jar包到本地仓库

        (4), 建立目录的两种方式:
        1, mvn archetype:generate  按照提示进行选择
        2, mvn archetype:generate -DgroupId=组织名(网址反写+项目名)
                                            -DartifactId=项目名-模块名
                                            -Dversion=版本号
                                            -Dpackage=代码所在的包名
        例:
        D:\Maven\code\maven02>mvn archetype:generate -DgroupId=com.gy.maven02 -DartifactId=maven02-utils -Dversion=0.0.1SNAPSHOT -Dpackage=com.gy.maven02.utils
 

 4, Maven中的坐标和仓库:
    Maven 经过这三个来定位坐标: 
        <groupId>com.gy.maven01</groupId>
        <artifactId>maven01-model</artifactId>
        <version>0.0.1-SNAPSHOT</version>

    Maven 仓库 :  本地仓库,远程仓库
        镜像仓库:
            更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第152行:

<!--切换阿里镜像-->
    <mirror>
	  <id>aliyun</id>
	  <mirrorOf>central</mirrorOf>
	  <name>aliyun</name>
	  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	</mirror>

        更改本地仓库位置:
            更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第55行:

<!--切换本地仓库位置-->
<localRepository>D:/Maven/repo</localRepository>

        更改默认JDK版本:

                更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第197行:

<!--切换JDK版本为1.8-->
<profile>
    <id>jdk-1.8</id>
    <activation>
		<activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>


5, 完整项目构建过程包括:
    清理, 编译, 测试, 打包, 集成测试, 验证, 部署

6, Maven 生命周期:
    clean   : 清理项目
        clean的三个阶段:
            pre-clean  : 执行清理前的工做
            clean      : 清理上一次构件生产的全部文件
            post-clean : 执行清理后的文件

    default : 构建项目(最核心)
        clean,--> compile,--> test,--> package, install
        执行package时会依次执行前面的步骤;
    site        : 生成项目站点
        site的四个阶段:
            pre-site : 在生成项目站点前要完成的工做;
            site       : 生成项目的站点文档;
            post-site: 在生成项目站点后要完成的工做;
            site-deploy : 发布生成站点到服务器上7, Maven插件的使用:
7,  Maven插件的使用:  在项目pom.xml中添加:

<build>
        <!-- Maven插件集合 -->
        <plugins>
            <!-- Maven-source插件,做用: 将项目源码打包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <executions><!-- 插件运行阶段集合 -->
                    <execution>
                        <phase>package</phase><!-- 在项目package(打包)时运行该插件 -->
                        <goals><!-- 运行目标 -->
                            <goal>jar-no-fork</goal><!--与jar类似(将源码打成jar包),但不会构建生命周期-->
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

8, pom.xml经常使用元素介绍:

<?xml version="1.0" encoding="UTF-8"?>
<!--  Maven官网: http://maven.apache.org  -->

<!-- project: pom.xml的根元素,包含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/maven-v4_0_0.xsd">
	<!--  固定的MAVEN版本  -->
	<modelVersion>4.0.0</modelVersion>

	<!-- 
		多模块使用: 

		<parent></parent>	parent: 一般用于子模块中对父模块的继承;

		<modules>			modules: 指定多个模块,一块儿进行编译
			<module></module>
		</modules>
	-->

	
	<!--
		当前项目坐标:
			groupId    : 反写的公司网址.项目名;
			artifactId : 项目名-模块名;
			version    : 项目版本
				第一个0: 大版本号;
				第二个0: 分支版本号;
				第三个0: 小版本号;
				SNAPSHOT 快照版本;
				ALPHA    内部测试;
				BETA     公测版本;
				GA		 正式发布;
	-->
	<groupId>com.gy.maven01</groupId>
	<artifactId>maven01-model</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<!--
		打包形式,默认为jar:
			jar  JAR包;
			war  WAR包;
			zip  压缩包;
			pom  配置包;

		<packaging>jar</packaging>
	-->

	<!--
		不常常用:

		产生项目文档时须要用:
		<name>项目描述名</name>

		项目地址:
		<url></url>

		项目描述:
		<description></description>

		项目开发人员列表:
		<developers></developers>

		开源框架许可证信息:
		<licenses></licenses>
		
		组织信息:
		<organization></organization>
	-->
	<!-- 
		重要:
		
		项目依赖列表 
		<dependencies>
			<dependency>	dependency: 依赖项目
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.10</version>
				<type></type>
				<scope>test</scope>			scope: 依赖范围;
				<optional>false</optional>	optional(true|false): 设置依赖是否可选,默认为false;
				<exclusions>				exclusions: 排除依赖的列表
					<exclusion></exclusion> exclusion : 排除依赖的项目
				</exclusions>   
			</dependency>
		</dependencies>
	-->
	
	<!--
		<scope></scope> : 依赖范围详解(官网: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope):
		
		compile  : 默认,对编译,测试,运行 都有效;
		provided : 在编译,测试时有效;
		runtime  : 在测试,运行时有效;
		test	 : 只在测试时有效;
		system	 : 在编译,测试时有效;与本机系统相关联,移植性差;
		import   : 导入的依赖范围;它只使用在 <dependencyManagement> 中,表示从其余pom中导入dependency配置;
	-->

	<!--
		不常常使用:
		<dependencyManagement>	dependencyManagement: 项目依赖管理
			<dependencies>	dependencies: 项目依赖列表 
				做用: 里面的依赖项目不会直接参与运行,一般定义在父类模块中,供子模块继承;
			</dependencies>	
		</dependencyManagement>
		
	-->

	<!-- 项目依赖列表 -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
		</dependency>
	</dependencies>

	<!--
		<build>	
			<plugins>	plugins: Maven插件列表
				<plugin> plugin: 插件
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat8-maven-plugin</artifactId>
					<version>2.2</version>
					<executions>
						<execution>
							<phase>package</phase>	在打包时执行该插件
							<goals>
								<goal>run</goal>    运行目标: run;
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
	-->


	<build>
		<!-- Maven插件集合 -->
		<plugins>
			<!-- Maven-source插件,做用: 将项目源码打包 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.4</version>
				<executions><!-- 插件运行阶段集合 -->
					<execution>
						<phase>package</phase><!-- 在项目package(打包)时运行该插件 -->
						<goals><!-- 运行目标 -->
							<goal>jar-no-fork</goal><!--与jar类似(将源码打成jar包),但不会构建生命周期-->
						</goals>
					</execution>
				</executions>
			</plugin>

		</plugins>
	</build>

</project>

9, Maven依赖传递:
    B依赖A; C依赖B, ===> C依赖A

10, Maven依赖冲突:
    1, 短路优先原则: 
        A -> B -> C -> X(jar);
        A -> D -> X(jar);
        两条路径优先解析下面的较短路径;

    2, 路径相同,先声明先解析;
11,  Maven聚合和继承:

<!--
		<parent></parent>	parent: 一般用于子模块中对父模块的继承;

		<modules>			modules: 指定多个模块,一块儿进行编译
			<module></module>
		</modules>


        <dependencyManagement>	dependencyManagement: 项目依赖管理
			<dependencies>	dependencies: 项目依赖列表 
				做用: 里面的依赖项目不会直接参与运行,一般定义在父类模块中,供子模块继承;
			</dependencies>	
		</dependencyManagement>
-->

差很少就是这么多了,其余的用法能够参考MAVEN官网;

参考:   http://maven.apache.org

参考 :  https://www.imooc.com/learn/443

相关文章
相关标签/搜索