maven学习

Maven

强烈建议直接使用idea自带maven

maven在idea中的配置与使用

Settings.xml配置文件详解:https://www.cnblogs.com/soupk/p/9303611.html 

自我学习后总结:

平时我们只需要去使用idea右边菜单栏自带的maven,的Lifecycle中的各命令就可以【强烈建议使用Lifecycle

Lifecycle:【缺少插件自动下载】【注意:使用Lifecycle中的命令无需在pom.xml文件中添加多余的插件,否则会因为重复寻找插件而报错】,Plugin:不会自动下载缺少的插件,需要在pom.xml中进行配置。【不建议使用】

  1. 配置mac中Prferences-->Maven中的3个选项,我们实际是对idea右边菜单栏自带的maven进行的配置。3个选项默认maven我们可以直接使用idea自带的。Settings.xml配置文件可以直接用下面这个。   pom.xml无需添加配置

【其他具体配置请自行百度,下面配置,设置了源仓库:阿里云,默认jdk 1.8,】

 

  1. 安装

下载不同的版本:https://archive.apache.org/dist/maven/maven-3/ 选择要安装的版本之后:再选择binaries,然后根据操作系统选择.tar.gz包或者.zip包即可

    1. Mac:https://blog.csdn.net/dearKundy/article/details/80291275 【内部源不要修改,该连接修改内部源的方法会引起报错,不修改任何东西,直接使用默认配置即可】
    2. Window:
  1. mvn命令不生效办法

配置maven环境变量时,path系统变量中配置了 ;%MAVEN_HOME%\bin,但是在命令窗口执行mvn -version没有生效,解决办法就是在path环境变量中直接配置maven的bin目录的位置,如:在path环境变量添加;D:\apache-maven-3.5.4\bin;问题得到解决!!!

3. 使用

    1. 创建一个pom.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> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> <artifactId>project</artifactId> <!-- 版本号 --> <version>1.0</version> </project>

    1. 进入创建该文件的目录,然后运行mvn命令:mvn help:effective-pom即可
  1. 报错

打包:

 错误:repackage failed: Unable to find main class

参考:https://www.cnblogs.com/bettyling/p/10493350.html 

下面这段话是spring boot框架打包用的,如果有下面这段配置的话,就可以把他打包成直接在控制台通过命令:java -jar 【jar包所在路径】进行执行此jar包

spring-boot-maven-plugin 打包插件解析: https://www.cnblogs.com/jpfss/p/11098740.html 

最简单的配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

复杂配置:

<plugins>
   <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
         <mainClass>com.xx.webapps.api.main.WebappsApiBidMain</mainClass>
      </configuration>
      <executions>
         <execution>
            <goals>
               <goal>repackage</goal>
            </goals>
         </execution>
      </executions>
   </plugin>
</plugins>

错误2:  Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project

实际是因为缺少maven的编译插件

在pom.xml文件的build加入代码

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <verbose>true</verbose>
                <fork>true</fork>
                <executable>${JAVA8_HOME}/bin/javac</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 修改(settings.xml)配置文件
    1. 修改下载源为阿里云

此与<profiles></profiles>同级的标签中添加下面配置 

 <mirrors>
    <!-- 阿里云仓库 -->
    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    
    <!-- 中央仓库1 -->
    <mirror>
        <id>repo1</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo1.maven.org/maven2/</url>
    </mirror>
    
    <!-- 中央仓库2 -->
    <mirror>
        <id>repo2</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo2.maven.org/maven2/</url>
    </mirror>
  </mirrors>

b)

在<profiles> </profiles>中添加此段配置,设置默认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>

 

  1. 项目引用另一个项目,通过jar包

注:记得删除之前mvn install的jar,如果不需要了的话

https://blog.csdn.net/weixin_33939843/article/details/91893498 

里面的内容:自我测试然后理解:发现不只是创建maven项目, 还有springboot框架【因为带maven】所以同样可以相互引用。

提示:引入项目的jar包之后,就相当于在新的项目全局引入了 那个项目的java文件夹

所以我们在import 的时候,只需要根据被引入项目的java路径为根路径,进行引用即可。 栗子:java文件夹中有同级的两个包。com.example.demo1和com2.example.demo3

那么我们在pom.xml文件夹中,通过被引入项目pom.xml文件中配置的groupId名, name, version,导入jar包之后。【注:记住原来项目有修改或者重新install过的话,要在引入他项目的pom.xml文件中,将其重新导入一下】,然后我们就可以在新项目中通过

Import  com.example.demo1.*   和   import com2.example.demo3.* 或者直接com.example.demo1.指定类名即可

 

记住

当pom.xml文件中出现:<built></built>标签,然后内部有下面这个的时候,mvn install 生成的jar包就不能被成功引用。暂时不知道为什么!!!!!!

spring-boot-maven-plugin

参考链接:https://www.cnblogs.com/jpfss/p/11098740.html 

 

 

 

 

尚硅谷视频学习

1生命周期的默认生命周期最重要。 【重点看依赖】

  1. 依赖的传递性,a项目需要a.jar包,然后b项目引用a项目,自动导入a项目需要的a.jar包。好处就是我们可以在a项目中导入我们的jar包,b(引用a),c(引用a)项目就不需要再次手动导入,直接就可以引用a项目之后就被传递过来了【注意:只传递scope为compile的jar包】
  2. 继承,统一管理版本
  3. 聚合:多个存在依赖的工程,按照依赖关系,mvn统一install,complie等

1、目前掌握的技术

 

2、目前的技术在开发中存在的问题[why]

一个项目就是一个工程

如果项目非常庞大,就不适合继续使用package来划分模块。最好是每一个模块对应一个项目,利于分工协作。

借助于maven就可以将一个项目拆分成多个工程。

 

项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下

带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。

借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件,并不需要重复复制。

 

jar包需要别人替我们准备好,或到官网下载

所有知名框架或第三方工具jar包已经按照统一规范放在了Maven的中央仓库中。

 

一个jar包依赖的其他jar包需要自己手动加到项目中

Maven会自动将被依赖的jar包导入进来。

 

3、Maven是什么[what]

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理 。Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn]。

构建工具的发展:Make→Ant→Maven→Gradle

 

构建:就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、jsp页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

 

eclipse中的项目与tomcat中编译结果对比:

 

 

构建过程中的几个主要环节

①清理:删除以前的编译结果,为重新编译做好准备。

②编译:将Java源程序编译为字节码文件。

③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

④报告:将每一次测试后以标准的格式记录和展示测试结果。

⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对象war包。

⑥安装:在Maven环境下特指将打包的结果——Jar包或War包安装到本地仓库中。

⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

 

自动化构建

程序员一天的工作:

 

能否将这些程式化的工作交给机器自动完成呢?——当然可以!这就是自动化构建。

 

此时 Maven 的意义就体现出来了,它可以自动的从构建过程的起点一直执行到终点:

 

4、安装Maven核心程序

检查JAVA_HOME环境变量

 

C:\Users\zxm>echo %JAVA_HOME%

D:\Program Files\Java\jdk1.8.0_111

 

解压Maven核心程序的压缩包,放在一个非中文、无空格 的路径下

 

D:\ProgramData\apache-maven-3.2.2

 

配置Maven相关的环境变量

①MAVEN_HOME 或 M2_HOME

 

②path

 

验证:运行 mvn -v 命令查看Maven版本

 

C:\Users\zxm>mvn -v

Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)

Maven home: D:\ProgramData\apache-maven-3.2.2

Java version: 1.8.0_111, vendor: Oracle Corporation

Java home: D:\Program Files\Java\jdk1.8.0_111\jre

Default locale: zh_CN, platform encoding: GBK

OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “dos”

 

5、Maven的核心概念

约定的目录结构

POM

坐标

依赖

仓库

生命周期/插件/目标

继承

聚合

6、第一个Maven工程

创建约定的目录结构

 

pom.xml文件为Maven工程的核心配置文件

 

为什么要遵循约定的目录结构呢?

我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式:

①以配置文件的方式明确告诉框架 如 < param-value>classpath:spring-context.xml < /param-value>

②遵循框架内部已经存在的约定 如log4j的配置文件名规定必须为 log4j.properties 或 log4j.xml ;Maven 使用约定的目录结构

 

7、Maven常用命令

注意:执行与构建过程相关的Maven命令,必须进入pom.xml 所在的目录。

常用命令

【1】mvn clean : 清理 ,清除上一次maven执行的结果(也就是删除target文件夹)

【2】mvn compile : 编译主程序 , 在src,同级目录下,也就是pom.xml文件存在的目录执行此命令,会在同级目录生成target文件夹,将我们在main/java文件夹中所写的.java文件按照我们的目录结构编译为.class文件(target中对应classes文件夹)

【3】mvn test-compile : 编译测试程序 ,在src,同级目录下,也就是pom.xml文件存在的目录执行此命令,会在同级目录生成target文件夹,将我们在test文件夹中所写的.java文件按照我们的目录结构编译为.class文件(target中对应test-classes文件夹)

【4】mvn test : 执行测试

【5】mvn package : 打包(会执行测试) 在target文件夹中生成了maven-status与surefire-reports(测试报告)两个文件夹,以及一个项目主程序的.jar包

【6】mvn install : 安装 ,安装项目pom.xml文件自定义的jar包,将我们的项目安装进入到maven的repo仓库

【7】mvn site :生成站点

8、关于联网问题

Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须有特定的插件来完成。而插件本身不包含在Maven核心程序中。

当我们执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。

本地仓库的默认位置:[系统登陆用户的家目录] \ .m2\repository

Maven核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库下载。

如果此时无法连接外网,则构建失败。

修改默认本地仓库的位置可以让Maven核心程序到我们事先准备好的目录下查找插件

①找到Maven解压目录\conf\settings.xml

②在setting.xml 文件中找到 localRepository 标签

③将 < localRepository>/path/to/local/repo< /localRepository>从注释中取出

④将标签体内容修改为自定义的Maven仓库目录

9、POM

含义:Project Object Model 项目对象模型

DOM :Document Object Model 文档对象模型

 

pom.xml 对于 Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。

重要程度相当于web.xml 对于动态web工程

 

10、坐标

数学中的坐标:

①在平面中,使用X,Y坐标可以唯一的定位平面中任何一个点。

②在空间中,使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点。

 

Maven的坐标:

使用下面三个向量在仓库中唯一定位一个Maven工程

 

①groupid:公司或组织域名倒序+项目名

 

< groupid>com.atguigu.maven< /groupid>

 

②artifactid:模块名

 

< artifactid>Hello< /artifactid>

 

③version:版本

 

< version>1.0.0< /version>

 

Maven 工程的坐标与仓库中路径的对应关系,以spring为例

 

< groupId>org.springframework< /groupId>

< artifactId>spring-core< /artifactId>

< version>4.0.0.RELEASE< /version>

 

org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

 

注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

 

11、仓库

仓库的分类

①本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务

②远程仓库

(1)私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务

 

(2)中央仓库:假设在Internet上,为全世界所有Maven工程服务

(3)中央仓库镜像:为了分担中央仓库流量,提升用户访问速度

 

仓库中保存的内容:Maven工程

①Maven自身所需要的插件

②第三方框架或工具的jar包

③我们自己开发的Maven工程

 

不管是什么样的 jar 包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。

 

12、依赖

当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这是概念上的描述。Maven解析依赖信息时会到仓库中查找被依赖的jar包。

对于我们自己开发的Maven工程,要使用mvn install 命令安装后就可以进入仓库。

依赖的范围

①从项目结构角度理解compile和test的区别

 

compile范围依赖

》对主程序是否有效:有效

》对测试程序是否有效:有效

》是否参与打包:参与

》是否参与部署:参与

》典型例子:spring-core 【测试环境与主程序都需要用到此jar包】

 

test范围依赖

》对主程序是否有效:无效

》对测试程序是否有效:有效

》是否参与打包:不参与

》是否参与部署:不参与

》典型例子:Junit 【测试环境需要用到junit的jar包,而main主程序不需要用到】

 

②从开发和运行这两个阶段理解compile 和 provided 的区别

 

》对主程序是否有效:有效

》对测试程序是否有效:有效

》是否参与打包:不参与

》是否参与部署:不参与

》典型例子:Servlet-api.jar 【主程序和测试的时候需要用到此插件,但是部署到服务器上,tomcat服务器内嵌了Servlet-api.jar此jar包,如果重复引用就会引起冲突】

 

③有效性总结

 

依赖的传递性

A依赖B,B依赖C,A能否使用C呢?要看B依赖C的范围是不是compile

 

依赖的排除

如果我们当前工程中引入了一个依赖是A,而A又依赖了B,那么Maven会自动将A依赖的B引入当前工程,但是个别情况下B有可能是一个不稳定版本,或对当前工程有不良影响。这时我们可以在引入A的时候将B排除。

 

①情景举例

 

②配置方式

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
    < exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </ exclusion> 
</exclusions>
</dependency>

③排除后的效果

 

统一管理所依赖 .jar 包的版本

对同一个框架的一组jar包最好使用相同的版本。为了方便升级架构,可以将jar包的版本信息统一提取出来

 

①统一声明版本号

 

其中 atguigu.spring.version 部分是自定义标签。

 

②引用前面声明的版本号

 

 

 

③其他用法

 

依赖的原则,解决jar包冲突

①路径最短者优先

解释:hello引用17版本,然后helloFriend因为有特殊需要,又在pom.xml中声明指定了14版本,根据就近传递原则,makeFriends就引用了14版本

注意:如果所需版本不同,只需要在pom.xml文件中重新声明一下就可以将传递过来的版本覆盖了

 

②路径相同时先声明者优先

解释: 根据MakeFriends的pom.xml中dependency声明顺序来引入,如果先dependency HelloFriend就引入14版本,否则反之。

统一管理依赖的版本

【情景举例】

这里对Spring各个jar包的依赖版本都是4.0.0

如果需要统一升级为4.1.1,怎么办?手动逐一修改不可靠(会有遗漏)

【2】建议配置方式

I:使用properties标签统一声明版本号

Ii:在需要统一版本的位置,使用${自定义标签名}引用声明的版本号。在pom.xml中配置<properties>标签。

13、生命周期

各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行。

Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的。

Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中各个阶段:不论现在要执行生命周期中的哪一阶段,都是从这个生命周期最初的位置开始执行。

Maven有三套相互独立的生命周期,分别是:

①Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

②Default Lifecycle 构建的核心部分,编译、测试、打包、安装、部署等等。

③Site Lifecycle 生成项目报告,站点,发布站点。

 

他们相互独立。也可以直接运行 mvn clean install site 运行所有这三套生命周期。

 

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行 mvn clean,这个 clean 是 Clean 生命周期的一个阶段。有 Clean 生命周期,也有 clean 阶段。

 

Clean声明周期

①pre-clean 执行一些需要在clean之前完成的工作

②clean 移除所有上一次构建生成的文件

③post-clean 执行一些需要在clean 之后立刻完成的工作

 

Default声明周期 【每次构建都会从头构建到指定命令,比如mvn validate就只是运行到此,如果运行到compile,就从validate compile停止, 如果test 就是validate compile test】

Default 生命周期是 Maven 生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些比较重要和常用的阶段:

validate

generate-sources

process-sources

generate-resources

process-resources 复制并处理资源文件,至目标目录,准备打包。

compile 编译项目的源代码。

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources 复制并处理资源文件,至目标测试目录。

test-compile 编译测试源代码。

process-test-classes

test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package

package 接受编译好的代码,打包成可发布的格式,如 JAR。

pre-integration-test

integration-test

post-integration-test

verify

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享或部署到服务器上运行。

 

Site生命周期

①pre-site 执行一些需要在生成站点文档之前完成的工作

②site 生成项目的站点文档

③post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

④site-deploy 将生成的站点文档部署到特定的服务器上

 

这里经常用到的是 site 阶段和 site-deploy 阶段,用以生成和发布 Maven 站点,这可是 Maven 相当强大的功能,Manager 比较喜欢,文档及统计数据自动生成,很好看。

 

插件和目标

Maven的核心仅仅定义了抽象的声明周期,具体的任务都是交由插件完成的。

每个插件都实现多个功能,每个功能就是一个插件目标

Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。

可以将目标看做“调用插件功能的命令”

 

例如:compile 就是插件 maven-compiler-plugin 的一个目标;pre-clean 是插件 maven-clean-plugin 的一个目标。

 

14、在Eclipse中使用Maven

Maven插件Eclipse已经内置。

 

Maven插件的设置: Window->Preferences->Maven

①installations : 指定Maven核心程序的位置。默认是插件自带的Maven程序,改为我们自己解压的那个。

②user settings : 指定Maven核心程序中 conf/settings.xml 文件的位置,进而获取本地仓库的位置。

 

基本操作

①创建Maven版的Java工程

创建时勾选上 Create a simple project(skip archetype selection)

 

创建的Maven工程默认使用的是JDK1.5,打开Maven核心程序settings.xml文件,找到profiles标签,加入如下配置,即可更改

<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>

②创建Maven版的Web工程

1、New Maven project时,Packaging 选择 war

 

2、调整web目录结构,在项目上点右键 -> properties->Project Facets -> 把Dynamic Web Module 勾选去掉,并Apply -> 将Dynamic Web Module 重新勾选 -> 点击Further configuration available -> 修改 Content directory为src/main/webapp -> Apply 即在Maven工程上生成动态Web目录结构

3、新建jsp文件发现报错:The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path

因为缺少Tomcat 运行时环境

以Maven方式添加:

在pom.xml文件中添加

 

4、jsp写入EL表达式时发现报错:javax.servlet.jsp cannot be resolved to a type

将JSPAPI导入

在pom.xml文件中添加

 

注意:scope一定要是provided,不然jar包冲突,运行时会报空指针异常

 

③执行Maven命令

选中pom.xml 右键 Run As->Maven build…->Goals->输入 compile ->点击 run

 

15、继承

现状

Hello依赖的Junit:4.0

HelloFriend依赖的Junit:4.0

MakeFriends依赖的Junit:4.9

 

由于test范围的依赖不能传递,所以必然会分散在各个模块工程中,很容易造成版本不一致。

 

需求:统一管理各个模块工程中对Junit依赖的版本。

 

解决思路:将Junit依赖统一提取到“父”工程中,在子工程中声明Junit依赖是不指定版本,以父工程中统一设定的为准。同时也便于修改。

 

操作步骤:

①创建一个Maven工程作为父工程。注意:打包方式为pom

②在子工程中声明对父工程的引用

 

③将子工程的坐标中与父工程坐标中重复的内容删除

 

④在父工程中统一管理Junit的依赖

 

⑤在子工程中删除Junit依赖的版本号部分

 

注意:配置集成后,执行安装命令时要先安装父工程。

 

16、聚合

作用:一键安装各个模块工程。

配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块 【总的聚合工程:也就是我们统一管理junit版本的父工程(他能智能识别他们之间的依赖关系,正确的按照父-》子顺序install)】

使用方式:在聚合工程的pom.xml 上点右键->run as->maven install

17、Maven_Web工程的自动部署

https://www.bilibili.com/video/av36557763?p=34 我暂时还没有跑成功

在pom.xml 中添加如下配置:

 

  <!--配置当前工程构建过程中的特殊设置   -->

  

 <build>
    <finalName>AtguiguWeb</finalName>
    <!-- 配置构建过程中需要使用的插件 -->
    <plugins>
        <plugin>
            <!-- cargo是一家专门从事启动Servlet容器的组织 -->
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.2.3</version>
            <!-- 针对插件进行的配置 -->
            <configuration>
                <!-- 配置当前系统中容器的位置 -->
                <container>
                    <containerId>tomcat6x</containerId>
                    <home>/Users/wangrui/Desktop/java/apache-tomcat-7.0.96</home>
                </container>
                <configuration>
                    <type>existing</type>
                    <home>/Users/wangrui/Desktop/java/apache-tomcat-7.0.96</home>
                    <!-- 如果Tomcat端口为默认值8080则不必设置该属性 -->
                    <properties>
                        <cargo.servlet.port>8989</cargo.servlet.port>
                    </properties>
                </configuration>
            </configuration>
            <!-- 配置插件在什么情况下执行 -->
            <executions>  
                <execution>  
                    <id>cargo-run</id>
                    <!-- 生命周期的阶段 -->  
                    <phase>install</phase>  
                    <goals>
                        <!-- 插件的目标 -->  
                        <goal>run</goal>  
                    </goals>  
                </execution>  
            </executions>
        </plugin>
     </plugins>
    </build>

执行mvn deploy 命令

 

18、Maven 酷站

我们可以到 http://mvnrepository.com/搜索需要的 jar 包的依赖信息。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值