阅读 133

maven-5/10

maven

安装路径:

http://maven.apache.org/downloa/d.cgi

文件内容:

bin:含有mvn运行的脚本boot:含有plexus-classworlds类加载器框架lib:含有Maven运行时所需要的java类库conf:含有settings.xml配置文件settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到此仓库中]

配置环境变量

maven环境变量配置,配置方式跟jdk有些类似。

新建环境变量MAVEN_HOME(值为maven的根目录)、然后在PATH环境变量里加入%MAVEN_HOME%\bin;即可。

输入mvn –v进行查看

仓库配置

本地仓库:就是Maven在本机存储构件的地方。maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建。maven本地仓库的默认位置:在用户的目录下都只有一个.m2/repository/的仓库目录;可以修改

D:/repository/maven

中央仓库:包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。开源的Java项目依赖的构件都可以在这里下载到。
中央仓库的地址:https://repo1.maven.org/maven2/

私服:是一种特殊的远程仓库,它是架设在局域网内的仓库

阿里云镜像配置

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>

生命周期

clean 清理

validate

install 打包

site 站点

clean: 主要目的是清理项目(第一生命周期)pre-clean: 执行一些清理前需要完成的工作clean: 清理上一次构建生成的文件post-clean: 执行一些清理后需要完成的工作
default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分
validate
initialize
generate-sourcesprocess-sources: 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中
generate-resources
process-resourcescompile: 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中target
process-classes
generate-test-sourcesprocess-test-sources: 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中
generate-test-resources
process-test-resourcestest-compile: 编译项目的测试代码,一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中
process-test-classes@Testtest: 使用单元测试框架运行测试,测试代码不会打包或部署
prepare-packagepackage: 接受编译好的代码,打包成可发布的格式,如JAR
pre-integration-test
integration-test
post-integration-test
verifyinstall: 将包安装到Maven本地仓库,供本地其他Maven项目使用deploy: 将最终的包复制到远程仓库(私服),供其他开发人员和Maven项目使用
site生命周期: 建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成站点pre-site: 执行一些在生成项目站点之前需要完成的工作site: 生成项目站点文档post-site: 执行一些在生成项目站点之后需要完成的工作site-deploy: 将生成的项目站点发布到服务器上

pom 详解

<!--固定的--><modelVersion>4.0.0</modelVersion><!--描述当前项目的组织--><groupId>cn.cdqf</groupId><!--描述当前项目的唯一id--><artifactId>maven_01</artifactId><version>1.0-SNAPSHOT</version><!--定义打包的方式
jar:默认方式
war: web项目最终打成war包 放在服务器上运行
pom:其它项目的父亲
--><packaging>war</packaging><!--spring jar包有50个 组织+id+版本
    定义常量
--><properties>
    <junit.version>4.12</junit.version></properties><!--项目所有依赖都写在这里面
       每一个<dependency>就表示一个依赖
    groupId+artifactId+version :精确在仓库中定位一个jar
--><dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <!--依赖范围-->
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
        <!--排除当前jar依赖的某个jar包 一般在jar包冲突的时候使用-->
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency></dependencies>

scope介绍

例如:测试时有效依赖

        <!-- 单元测试 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
scope定义了依赖的范围,默认是compile。compile:编译依赖范围,使用此依赖范围对于编译、测试、运行三种classpath都有效,即在编译、测试和运行时都要使用该依赖jar包;test:测试依赖范围,只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;provided:已提供依赖范围。编译和测试有效,运行无效。如servlet-api,在项目运行时,

tomcat等容器已经提供,无需Maven重复引入;

runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;

system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用

jar包冲突

SDK (优秀的开源项目),依赖于某些依赖。

使用SDK时,依赖问题

引入条件:

maven聚合(重点难点)

创建父模块-packaging标签中pom

<!--定义打包的方式
jar:默认方式
war: web项目最终打成war包 放在服务器上运行
pom:其它项目的父亲
--><packaging>war</packaging>

子工程 utils:

当子工程dao 中需要引用时:

面试

Maven常用命令Maven常用命令

  • 编译源代码: mvn compile

  • 编译测试代码:mvn test-compile

  • 清除产生的项目:mvn clean

  • 运行测试:mvn test

  • 打包:mvn package

  • 在本地Repository中安装jar:mvn install

  • 上传项目到远程仓库:mvn deploy(更多是私服,需要用户名密码等认证)

  • 产生site:mvn site 站点,对整个项目的描述,需要加入如下插件

<build>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.7.1</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.doxia</groupId>
                <artifactId>doxia-site-renderer</artifactId>
                <version>1.8</version>
            </dependency>
        </dependencies>
    </plugin>
    </plugins></build>

游览器打开,详细项目描述-英语

别说差点,差点就是永远

来源:https://www.cnblogs.com/lnkD/p/14752343.html

服务器评测 http://www.cncsto.com/ 


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐