Maven_基础

来源:互联网 发布:发达国家粉碎机 知乎 编辑:程序博客网 时间:2024/06/01 21:27

一、认识

        在maven之前我们是怎样管理项目的,全手动--->半自动化的ant--->maven。(ant需要自己手动写maven的超级setting.xml中的配置)

二、使用Maven好处(为什么要使用)

        1、约定优于配置的思想 

          比如我们将java和resources配置资源按照规定放置,则maven就会帮我们做很多的事。在

        2、使用简单

        3、测试支持(这点也是非常方便的)

        4、构建简单

        5、CI集成非常方便,如  maven+git+Jenkins

        6、丰富的插件和自定义插件

三、maven结构

        1、bin下面肯定就是一堆启动命令

        2、boot 只有一个jar包(plexus-classworlds-2.5.2.jar) ,自己的类加载器(classloader)。

        3、lib 与其他项目的lib一样

             注意该包下的下解压后会maven-model-builder-3.2.5.jarorg\apache\maven\model目录下找到超级pom.xml

            下面就是基本配置,也是约定优于配置的设置:

             <directory>${project.basedir}/target</directory>

             <outputDirectory>${project.build.directory}/classes</outputDirectory>

             <finalName>${project.artifactId}-${project.version}</finalName>

             <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>

             <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>

             <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>

             <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirector>

        4、conf 下最主要的setting文件,就是我们在ant中会自己手写的很多标签

             1)、<localRepository>D:\maven\mvnRespo</localRepository> maven本地仓库的地址

             2)、<interactiveMode>true</interactiveMode> 交互式模式,即可以提示,默认为关闭,只提示一个常用值

             3)、pluginGroups> <pluginGroup>com.your.plugins</pluginGroup> </pluginGroups> 插件组,可以方便的不用写很多的版本信息等

             4)、<profiles></profiles> 经常使用项目的pom.xml中的该标签(mvn -P dev,使用dev环境的配置)

四、maven的一些配置

        1、配置MAVEN_HOME

             在window中,配置用户的或全局的path,在linux在点bash_profile中进行配置

        2、MAVEN_OPTS设置一些全局的maven命令参数(maven是使用Java写的,所以也可以设置一些jvm的参数配置)

        3、配置setting.xml

              1)  settting的配置优先级:用户目录下的~/.m2/setting.xml的优先级高于安装目录下的conf/setting.xml

              2) 由于我们很多时候需要到官方下载jar包等,但是速度会很慢,可以在setting中添加mirrors

<mirrors>    <!-- mirror     | Specifies a repository mirror site to use instead of a given repository. The repository that     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.     |    <mirror>      <id>mirrorId</id>      <mirrorOf>repositoryId</mirrorOf>      <name>Human Readable Name for this Mirror.</name>      <url>http://my.repository.com/repo/path</url>    </mirror>     --><mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf>          </mirror><mirror><id>ui</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://uk.maven.org/maven2/</url></mirror><mirror>        <id>osc</id>        <mirrorOf>central</mirrorOf>        <url>http://maven.oschina.net/content/groups/public/</url>    </mirror>    <mirror>        <id>osc_thirdparty</id>        <mirrorOf>thirdparty</mirrorOf>        <url>http://maven.oschina.net/content/repositories/thirdparty/</url>    </mirror>  </mirrors>
        

     


原创粉丝点击