欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven自动化构建

程序员文章站 2022-06-17 15:23:45
...
1、Maven:是一款服务于Java平台的自动化构建工具
     (1)、Maven可以将一个项目按模块划分成不同的工程,利于分工协作。
     (2)、Maven可以将jar包保存在自己的*“仓库”中进行统一管理,有需要使用的工程引用这个文件接口即可,不需要真的将jar包复制过来(解决同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿)。
      (3)、可以自动导入依赖的相关jar包,之前需要自己手动导入相关jar包。
Tip:如下表示运行时环境,主要存储String等类似对象,其实只是一组jar包的引用。

     Maven自动化构建

   2、安装Maven:配置环境变量即可
       创建MAVNE_HOME环境变量

        Maven自动化构建
        在path中添加Maven的bin目录

        Maven自动化构建
        验证:mvn -v 命令查看maven版本。
3、自定义Maven仓库:修改解压目录下的conf/setting.xml文件
Maven自动化构建

4、maven compile:编译main文件,生成class文件位于target目录中。
     maven package:对主程序进行打包,生成文件在target目录中。
     maven clean:清理target目录下文件。

5、POM:project object model 项目对象模型。对于Maven工程是核心配置文件,与构建过程相关的一切设置都是在这个文件中进行设置。

6、坐标:使用下面三个向量在仓库中唯一定位一个Maven工程
     【1】、groupid:公司或组织域名倒序+项目名
     【2】、artifactid:模块名称<artifactid>Hello</artifactid>
     【3】、version:版本

        <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

7、 仓库的分类:【1】、本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有的Maven工程服务。

                           【2】、远程仓库:(1)、私服:搭建在当前局域网下,为当前局域网网范围内的所有Maven工程服务。
                                                        (2)、*仓库:架设在Internet上,为全世界所有Maven工程服务。
                                                        (3)、*仓库的镜像:为了分担*仓库的压力,提升用户访问的速度。

 8、依赖:Maven解析依赖信息时,会到本地仓库中找被依赖的jar包。
                对于我们开发的工程需要使用install命令安装后就可以进入仓库,生成jar包等文件。

        <dependency>
                <groupId>com.shidaiyintong</groupId>
                <artifactId>Hello</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <scope>compile</scope>
        </dependency>  
依赖具有传递性:当父类依赖了jar包后,子类Maven Dependencies也会自动添加,但非compile范围的jar包不能传递。
依赖的排除性:
        <exclusions>
           <exclution>
                <groupId>xxxx</groupId>
                <artifactId>xxx</artifactId>
           </exclution>
        </exclutions>
依赖的原则:解决jar包冲突问题,就近原则。相同路径取先声明者优先,指dependency标签的声明顺序。
依赖的范围:【1】、compile:对主程序、测试程序可见,主程序参与打包、测试程序不参与打包
                    【2】、test:对主程序无效,对测试程序有效,不参与打包
                      Maven自动化构建
                    【3】、provided:主要用于开发,测试有效。不参与打包(不部署),防止冲突(特别是一些服务器的jar包)。
                      Maven自动化构建
                      Maven自动化构建

9、生命周期:清理、编译、测试、报告、打包、安装、部署、运行。特性:当执行某一阶段时,都是从第一阶段开始执行。
10、利用MyEclipse中使用Maven:使用内置Maven但是需要设置如下(不建议使用自带的Maven程序,不稳定。使用我们自己解压的文件):Window-Preferences-Maven4MyEclise-Installations-Add
Maven自动化构建
设置User Settings:指定conf/settings.xml的位置,进而获取本地仓库的位置,如下:
Maven自动化构建
        

11、修改每次创建Maven项目后,JDK的版本,需要在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>
12、Maven中执行命令的方式:pom.xml——右键——Maven build...——Golas(compile)等。
13、Maven创建一个Web工程:创建的时候packing:war包,创建完后,会发现与我们平常的web工程不太一样,缺少web.xml等文件。添加方式如下:选中工程右键进入properties属性——Project Facets 去掉Dynamic Web Model 再勾上Dynamic Web Model,会出现超链接如下:
Maven自动化构建
在Content directory中输入要存放标准Web工程生成的文件的目录。
Maven自动化构建
最终目录:
Maven自动化构建       

14、Maven工程导入Existing Maven Project没有cope功能,因此要将Maven工程放入workspace目录中,进行导入。在Maven工程中主要通过pom.xml文件进行识别。普通Java文件导入时,有cope功能,也能够导入Maven工程,但必须是Eclipse工程,工程中含有.clsspath/.project文件为Eclipse工程。
15、自定义版本标签:方便版本升级等问题的解决,凡是需要声明后统一使用的场合都可以使用。

<properties>
   <atguigu.spring.verion>4.0.0.RELEASE</atguigu.spring.version>
</peoperties>

使用的时候只需要在<version>中输入${atguigu.spring.version}即可

16、继承:对依赖范围=test、provide的同一jar包的版本的管理。
       解决思想:将此jar包统一提取到“父”工程中,在子工程中声明此jar包依赖时不指定版本号,以父工程中统一设定的为准,同时也便于修改。
       操作步骤:【1】、创建一个Maven工程作为父工程,打包方式为pom
                        【2】、在子工程中声明对父工程的引用
                        【3】、将子工程中坐标与父工程坐标相同的内容删掉
                        【4】、在父工程中统一jar包依赖
                        【5】、在自工程中删除jar包依赖的版本号
子类找干爹配置

<parent>
   父元素的pom地址
   <relativePath>../Parent/pom.xml</relativePath>相对地址
</parent>
父类统一管理配置
<dependencyManagement>
  <dependencies>
    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit<artifactId>
       <version>4.0</version>
       <scope>test</scope>
    </dependency>
  <dependencies>
</dependencyManagement>

17、配置集成后,执行安装命令install时,要先安装parent,按顺序install,解决办法,聚合即可。
       聚合:一键安装各个模块工程。
       配置方式:在一个工程中配置,例如parent工程中:直接install parent项目就安装了全部工程,会自动检测顺序。
       查找jar包的pom文件:http://mvnrepository.com

<modules>
  <module>../Hello</module>
  <module>../HelloFriend</module>
</modules>