Maven仓库集成与使用

1.概念:Maven主要服务于基于java平台的项目构建(编译、测试、生成文档、打包、部署等),依赖管理和项目信息管理。
2.四大特性:
    2.1:依赖管理系统(jar包管理, jar 升级时修改配置文件即可)
        依赖(Coordination):由groupId、artifactId、version组成
        例如:

    <dependency>    
       <!--依赖的group ID-->    
            <groupId>org.apache.maven</groupId> //定义当前Maven项目隶属的实际项目-公司名称。(jar包所在仓库路径) 由于Maven中模块的概念,因此一个实际项目往往会被划分为很多模块。 比如spring是一个实际项目,其对应的Maven模块会有很多,如spring-core,spring-webmvc等
            <!--依赖的artifact ID-->    
            <artifactId>maven-artifact</artifactId> // 该元素定义实际项目中的一个Maven模块-项目名,推荐的做法是使用实际项目名称作为artifactId的前缀。比如:spring-bean、spring-webmvc等    
            <!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。-->    
            <version>3.8.1</version> //该元素定义Maven项目当前所处的版本
            <!-- 依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应, 尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在 plugin里定义新的类型。所以前面的类型的例子不完整。-->    
            <type>jar</type>    
            <!-- 依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成 JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。-->    
            <classifier></classifier>    
            <!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。    
                - compile :默认范围,用于编译      
                - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath      
                - runtime: 在执行时需要使用      
                - test:    用于test任务时使用      
                - system: 需要外在提供相应的元素。通过systemPath来取得      
                - systemPath: 仅用于范围为system。提供相应的路径      
                - optional:   当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用-->     
            <scope>test</scope>       
            <!--仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。-->    
            <systemPath></systemPath>     
            <!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题-->    
            <exclusions>    
             <exclusion>     
                    <artifactId>spring-core</artifactId>     
                    <groupId>org.springframework</groupId>     
                </exclusion>     
            </exclusions>       
            <!--可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。-->     
            <optional>true</optional>    
        </dependency>    

2.2:多模块构建
    项目分离:dao层、Service层、Controller层
    在Maven中需要定义一个parent POM作为一组module的聚合POM。在该POM中可以使用 标签来定义一组子模块。parent POM不会有什么实际构建产出。而parent POM中的build配置以及依赖配置都会自动继承给子module。
2.3:一致的项目结构
    Maven在设计之初的理念就是Conversion over configuration(约定大于配置)。其制定了一套项目目录结构作为标准的Java项目结构,解决不同ide 带来的文件目录不一致问题。
2.4:一致的构建模型和插件机制

<plugin>
 <groupId>org.mortbay.jetty</groupId>
 <artifactId>maven-jetty-plugin</artifactId>
 <version>6.1.25</version>
 <configuration>
 <scanIntervalSeconds>10</scanIntervalSeconds>
 <contextPath>/test</contextPath>
 </configuration>
</plugin>

3.Maven的安装与配置
    3.1:检查jdk版本(1.7或1.7以上):

java -version


3.2:maven下载地址:https://maven.apache.org/download.cgi

3.3.配置Maven环境变量

    3.3.1:解压

    3.3.2:我的电脑--->属性--->高级系统设置--->环境变量--->点系统变量下边的新建,然后按照我下边的配置即可

    3.3.3:在系统变量中的path中添加 %MAVEN_HOME2%\bin

    3.3.4:检测maven是否配置成功

4.MAVEN的项目结构:

${basedir} //存放pom和所有子项目
        |-- pom.xml 
        |-- src
            | |-- main
                | | -- java //项目源码
                | | -- resources //项目资源
           | | -- test
                | | -- java //项目的测试类(如junit)
                | | -- resources //测试使用的资源

5.MAVEN的命令:
    5.1:命令格式:

mvn [plugin-name]:[goal-name] //命令代表的含义:执行 plugin-name 插件的 goal-name 目标

    5.2:常用命令:
    mvn –version 显示版本信息
    mvn clean 清理项目生产的临时文件,一般是模块下的target目录
    mvn compile 编译源代码,一般编译模块下的src/main/java目录
    mvn package 项目打包工具,会在模块下的target目录生成jar或war等文件
    mvn test 测试命令,或执行src/test/java/下junit的测试用例.
    mvn install 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
    mvn deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
    mvn site 生成项目相关信息的网站
    mvn eclipse:eclipse 将项目转化为Eclipse项目
    mvn dependency:tree 打印出项目的整个依赖树
    mvn archetype:generate 创建Maven的普通java项目
    mvn tomcat7:run 在tomcat容器中运行web应用
    mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用
   
   5.3:命令参数:
       5.3.1:-D 传入属性参数
           mvn package -Dmaven.test.skip=true 以 -D 开头,将 maven.test.skip 的值设为 true ,就是告诉maven打包的时候跳过单元测试。
           mvn deploy-Dmaven.test.skip=true 代表部署项目并跳过单元测试。
    5.3.2:-P 使用指定的Profile配置

<profiles>
      <profile>
             <id>dev</id>
             <properties>
                    <env>dev</env>
             </properties>
             <activation>
                    <activeByDefault>true</activeByDefault>
             </activation>
      </profile>
      <profile>
             <id>pre</id>
             <properties>
                    <env>pre</env>
             </properties>
      </profile>
      <profile>
             <id>prod</id>
             <properties>
                    <env>prod</env>
             </properties>
      </profile>
</profiles>
......
<build>
      <filters>
             <filter>config/${env}.properties</filter>
      </filters>
      <resources>
             <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
             </resource>
      </resources>
     ......
</build>
//profiles 定义了各个环境的变量 id , filters 中定义了变量配置文件的地址,其中地址中的环境变量就是上面 profile 中定义的值, resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换。通过maven可以实现按不同环境进行打包部署,例如:mvn package -Pdev -Dmaven.test.skip=true

6:IDEA编辑器集成Maven环境
    6.1:修改conf里settings.xml文件
        6.1.1:在MAVEN中的conf找到settings.xml,然后进去编辑localRepository,这里编辑的地址是你自己设置的

<localRepository>/path/to/local/repo</localRepository>


  
6.1.2:找到mirrors在其中间添加阿里云镜像

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


6.2:idea集成Maven


7.idea创建MAVEN项目

maven普通项目创建完成。
7.Maven的常见错误
 - 创建Maven后,plugins全部报错
        解决方案:
            首先,进入maven本地仓库,找到对应的包对应的下载失败的文件(不是jar是last开头的)全部删除

然后在idea中File | Settings | Build, Execution, Deployment | Build Tools | Maven中找到Maven home path 配置成自己所下载的Maven文件,并把User settings file ,Local repository与自己的文件对应

其次,在File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing中找到 VM options for importer 在其中填上

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

并把JDK  for importer 改为c盘下载的jdk版本并点击右下方的apply,还要找到Runner并在Runner 中的VM Options也加上上边的话,JRE也换成c盘所下载jre的版本,最后返回主页面重新运行maven即可解决该问题,如果没解决,重新建一个项目,按照如上方法一步一步走。

 - 在上一步建好的基础上,有可能pom文件中build报错
      解决方案:
          把里面错的全删了,然后刷新

 - 在下载依赖的时候,下载完成后依赖爆红
     解决方案:
         下载对应文件的Download Sources and Documentation即可解决

最后,创作不易,请大家多多支持

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学tty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值