zoukankan      html  css  js  c++  java
  • java----Maven

    作用:大型项目协同开发,让代码和开发工具无关;

    下载地址

    http://maven.apache.org/download.cgi

    介绍

    bin:运行脚本 windows 输入mvn可以运行这些脚本

    boot:包含一个类加载器的框架,maven使用它来加载自己的类库

    conf:配置文件

    lib:maven所运行的所需的类库

    环境搭建

    将bin目录添加环境系统环境变量中

    输入 mvn 一些命令即可

    构建过程中的各个环节

    [1]清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
    [2]编译:将Java源程序编程成class字节码文件
    [3]测试:自动测试,自动调用junit程序
    [4]报告:测试程序执行的结果
    [5]打包:动态Web工程打war包,Java工程打jar包
    [6]安装:Maven特定的概念——将打包得到的文件复制到“仓库”中的指定位置
    [7]部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行
    

      

    Maven配置

    在setting中 profiles 属性中添加,生成的maven项目使用的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>

    或者在pom中(不确定是否有用)

    <properties>
    		<java.version>1.8</java.version>
    		<maven.compile.source>1.8</maven.compile.source>
    		<maven.compile.target>1.8</maven.compile.target>
    </properties>
    

      

    Maven一些命令(必须在含有pom文件的目录下执行)

    mvn clean  

      是清除target目录

    mvn compile

      不会删除之前创建的target

      编译(生成一个target目录),如果本地仓库没有jar包,就会去下载

    mvn test-compile

      会将test目录也编译进来

    mvn test

      执行的是maven的原生命令

      表示的是:对项目进行编译并执行测试代码。

    mvn package

      不会删除之前创建的target

      命令完成了项目编译、单元测试、打包功能,不会把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

      参考:https://blog.csdn.net/daiyutage/article/details/53739452

    mvn build  

      是重新对该maven项目进行打包,这里需要手动的输入打包的命令   -X package

    mvn install

      命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。
      会生成target目录,target目录说明:

        classes目录:.class.properties.xml文件;

        项目名目录:项目所有源码(前端、后台、jar包)

        项目名.war:将项目名目录打成的war包。

        最好使用mvn clean install 可以保证jar最新,但是会花费一些时间,下面的打包过程同理;

             mvn install -Dmaven.test.skip=true    忽略测试功能(我们可以直接将Test测试类给注释掉)

    mvn deploy

      完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

      

    mvn site

      生成站点(不知道有什么用)

    Maven依赖的范围

    compile      主程序参与,测试程序参与,参与打包
    test         主程序不参与(主程序访问不到这个jia包),测试程序参与,不参与打包
    provided     开发使用(主程序和测试都可以访问这个jar包),部署的时候忽略(不参与打包),由tomcat容器提供做需要的jar包(一般就是servlet-api.jar包之类的)
    

      

    Maven的依赖和继承和聚合

    依赖:如果A模块依赖的B模块,此时A模块就会依赖B模块的所有的jar包,注意如果需要将项目进行打包,B模块必须先安装到仓库中,此时A模块打包才不会报错。

    继承:创建一个"父" maven工程用来统一管理所有的jar包的版本(注意打包方式是pom),如果项目需要打包,需要提前将父工程打包到仓库中

      父工程通过<dependencyManagement /> 管理的jar包(自己不会去依赖他),子工程如果需要使用该jar包,需要手动引入jar包(但是不需要写版本号和作用域)

      父工程通过<dependencies /> 管理的jar包(自己也会依赖),子工程不需要手动引入jar包(自动继承所有的jar包)

        <!--方便统一管理依赖jar包的版本-->
        <properties>
            <junit.version>4.13-beta-2</junit.version>
        </properties>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>

      子工程通过<parent/>引用父工程,依赖jar包的时候不指定jar包版本

        <parent>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
    
            <!--以当前文件为基础(pom.xml),找父工程pom.xml的相对位置,在开发过程中,如果没有下面这个,启动项目就会报错,原因是这个pom在仓库中找不到,解决方式:需要反复将父工程install,不方便-->
            <relativePath>../项目名/pom.xml</relativePath>
        </parent>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <!--不需要指定版本了-->
                <!--<version>4.13-beta-2</version>-->
            </dependency>
        </dependencies>
    

    聚合:一键安装各个模块工程

      配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块(可以单独创建一个工程,或者用"父"工程来做)

      使用:在"聚合工程"中进行package或者install

      注意顺序很重要,被依赖的项目放到最上面

    <modules>
            <!--指定各个子工程的相对路径-->
            <module>../项目名字</module>
            <module>../maven01</module>
            <module>../maven02</module>
    </modules>
    

      

    Maven部署项目到服务器上

    1、手动,将打包好的war包放到wabapps目录下,启动 tomcat服务器,此时tomcat服务器会解压war包,注意生成的项目名字就是 xx.war包的前缀(xx),访问localhost:8080/xx/.....

    2、使用maven插件(感觉不实用),了解即可,应该可以配置远程的tomcat

        <build>
            <finalName>projectName</finalName>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.cargo</groupId>
                    <artifactId>cargo-maven2-plugin</artifactId>
                    <version>1.7.7</version>
                    <configuration>
                        <container>
                            <containerId>tomcat7x</containerId>
                            <home>F:	omcatapache-tomcat-9.0.19</home>
                        </container>
                        <configuration>
                            <type>existing</type>
                            <home>F:	omcatapache-tomcat-9.0.19</home>
                            <!--访问路径还是8080,好像没啥用-->
                            <properties>
                                <cargo.servlet.port>8081</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>
    

      

    Maven其他操作

    1.改变Maven本机的仓库地址

    (如果是IDEA,在D:IDEAIntelliJ IDEA 2019.1.1pluginsmavenlibmaven3confsettings.xml中)

    我的maven是F:Mavenapache-maven-3.6.1confsettings.xml

    修改其中的配置即可

    2.修改远程的maven镜像地址

    复制一份settings.xml 到:C:UsersYou user.m2(默认本地存放下载的jar包位置为当前用户文件下下的.m2文件中)下也就是你的本地maven仓库下。(好处在与不会破坏原来的代码,如果重新生成一个setting,刚刚上面的配置也注意要放到新的里面。原因在配置IDEA后,maven识别setting的位置我们自己改变,不在识别之前的setting)

    修改settings.xml 文件,找到 <mirrors> </mirrors> 标签,并添加如下阿里maven仓库配置:

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

      

    配置IDEA

    第二个Local respository是本机的仓库地址。注意这个仓库地址修改不会影响到maven从远处下载jar包到本机的仓库地址(这个地址是在setting中的配置的)

    右下角会弹出 是否要自动更新 dependency建议最好是要enable auto update,否则在pom.xml文件中会有红色报错,这时候不要慌 

    如果当前加入的包没有选择自动更新的话,要在右边的project版本栏中选择 dependencies 右键  download sources and documentation

    3.将自己下载好了的jar包安装到maven仓库库,让maven托管

    3.1首先下载说需要的jar包

    3.2使用插件(在编译前,将jar包安装到maven仓库中)

    如果项目中有管理插件版本的pom,配置如下

    <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-install-plugin</artifactId>
                        <version>2.5.2</version>
                    </plugin>
                </plugins>
    </pluginManagement>

    3.3此时可以重新生成一个项目。专门用来管理这些(不能远程下载的jar包)

    该项目的pom.xml 增加插件配置,关键配置如下(将版本号去掉):

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>   //省略版本号
                <executions>
                    <execution>
                        <id>install-external-kaptcha</id>
                        <!-- 触发时机:执行 mvn clean 命令时自动触发插件 -->
                        <phase>clean</phase>
                        <configuration>
                            <!-- 存放依赖文件的位置 -->
                            <file>${project.basedir}/libs/kaptcha-2.3.jar</file>
                            <repositoryLayout>default</repositoryLayout>
                            <!-- 自定义 groupId -->
                            <groupId>com.google.code.kaptcha</groupId>
                            <!-- 自定义 artifactId -->
                            <artifactId>kaptcha</artifactId>
                            <!-- 自定义版本号 -->
                            <version>2.3</version>
                            <!-- 打包方式 -->
                            <packaging>jar</packaging>
                            <!-- 是否自动生成 POM -->
                            <generatePom>true</generatePom>
                        </configuration>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

    3.4关联总pom

     3.4将下载的jar包添加到libs目录中

     

     <goal>install-file</goal>  代表执行的maven命令,详情:http://www.yayihouse.com/yayishuwu/chapter/1415

    3.4使用mvn clean命令将libs中的jar包全部安装到maven仓库中

    安装的路径为上面自定义的  groupId,文件名是 artifactId

    3.5,其他项目pom通常正常的依赖即可

    maven中的包不自动下载配置

    https://blog.csdn.net/zhang33565417/article/details/97634921

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/10792465.html
Copyright © 2011-2022 走看看