zoukankan      html  css  js  c++  java
  • maven(一 基本操作 命令 标签)


    原来一直没有使用maven 小公司,只是听说过这个东西,我没事就喜欢 去学习一些新东西。maven学了几次,但是 没有用上  所以 最后还是忘记了,或者说不知道怎么使用maven,一年半以前公司 改革 ,招了一个技术大牛,引入了一些那时候 感觉 很新颖的技术,maven,springboot  kafka,nginx redis 等,那时候对一个小公司 来说,这些 技术 还是比较 高端了,今天 就说一说 使用maven创建项目的时候 和以后 普通项目的区别:

     maven是什么,原来一直以为就是可以不用自己在网上去到处找jar包来 放到lib文件下了。只需要知道 一个jar包的地址 然后就 可以根据pom.xml文件配置 地址 然后就可以下载了,那时候 只知道是能这样干,(然后把自己的web项目拿去运行 一脸吗,懵逼  不知道怎么运行了,后面在说一下如何运行)后来 才发现 maven 其实提供的功能远不止这些。

    如何创建一个maven项目:

    1.     

      src/main/java:主要放你项目的源文件,
      src/main/resourecs:项目的配置文件
      src/test/java:测试代码
      src/test/resources:测试配置文件
      target:目标文件,maven打出来的jar包 或者war包 都放在这个目录
      pom.xml:maven的主要配置文件

      创建成了一个maven项目(如果创建 maven项目 不勾选的



      话目录结构不是这样子:)

    2. 在此基础上说一下 maven命令的使用 maven管理项目分为:编译 测试 运行 打包  部署 运行过程 找到 项目 路径地址 打开 cmd窗口:

      编译命令:mvn compile  将源文件生成.class文件

      测试命令:mvn teset
      清理命令:mvn clean  清理target 目录下的所有文件
      打包命令:mvn package  java项目打成jar包 web项目 打成war包


      如果想将自己的项目 打包 到本地仓库之中 ,可以使用 mvn install命令:

      运行 maven web项目:mvn tomact:run

    3. 主要还是详聊一下pom.xml 文件里面的配置(我这边以我自己的一个pom父项目来聊 用到的比较多):

    4. <packaging>pom</packaging> maven项目的打包类型 有 pom jar  war  web项目 打包war包  java项目 打成jar包  默认是jar包
      pom所有父项目 都是pom 而不是 jar或者war ,父项目,有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build,表示该父项目中有两个子项目jiahou-hongbao-protobuf,以及jiahou-hongbao

      <modules>
              <module>jiahou-hongbao-protobuf</module>
              <module>jiahou-hongbao</module>
          </modules>
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>8.0.13</version>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      dependencyManagement:从命名看来 依赖管理器,在父项目中 主要用于管理jar包 版本号  如果该项目的子项目 需要用到mysql-connector-java 的话 只需要:

      <dependencies>
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                  </dependency>
              </dependencies>

      不需要在加上版本号,所有的子项目都用8.0.13的版本号  如果需要 用自己的版本 号  则自己在添加对应的版本号。此时不在继承来自父项目的该jar包的版本号。

      dependencies:作用可以理解是 引入声明在dependencies的所有jar包(版本号相同的话 子类也自动引入了jar包)

      dependency:依赖注入,需要一个jar包 就 需要 一个dependency 所有的dependency 都 声明在 dependencies
      
      



    5. 关于mavne项目中的关于依赖传递有一个A 项目 依赖于B 项目 B 项目 又依赖于B 项目,则A 项目要使用B 项目的时候  则会引入 c项目。其实对于A 项目来说 只是要用到一些B 项目的功能,但是 也会引入C项目,导致本地仓库jar包变多,又假如A 项目 在引入B 项目的时候  AB 两个项目都引入了同一个jar包 但是 jar包版本不同 则可能导致 jar包冲突。如果父项目 依赖了 项目  x项目  但是子项目 又不需要依赖x项目 我们可以排除x项目:

      <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <exclusions>
      <exclusion>
      <groupId>x</groupId>
      <artifactId>x</artifactId>
      </exclusion>
      </exclusions>
      </dependency>

      以上 表示 在 引入 mysql jar包的时候 排除 X 

    6. 关于<build>标签:

      <finalName>打出来的包的名字</finalName>

      插件配置 如果不用一下配置 则 项目 效果是:


      有时候一个项目 很大的时候(很多依赖jar包) 我们却要实jar包分离  可以可以使用:

      <resources>
                  <resource>
                      <directory>src/main/resources</directory>
                      <excludes>
                          <exclude>*</exclude>
                      </excludes>
                      <filtering>true</filtering>
                  </resource>
              </resources>

       

              pluginManagement的配置和plugins的配置是一样的,只是用于继承,方便 子项目模块中 可以直接 使用,不用在重新配置 

      <build>  
          ...  
          <pluginManagement>  
              <plugins>  
                  <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-jar-plugin</artifactId>  
                    <version>2.2</version>  
                      <executions>  
                          <execution>  
                              <id>pre-process-classes</id>  
                              <phase>compile</phase>  
                              <goals>  
                                  <goal>jar</goal>  
                              </goals>  
                              <configuration>  
                                  <classifier>pre-process</classifier>  
                              </configuration>  
                          </execution>  
                      </executions>  
                  </plugin>  
              </plugins>  
          </pluginManagement>  
          ...  
      </build>  

      子项目 只需要 :

       <plugins>  
              <plugin>  
                  <groupId>org.apache.maven.plugins</groupId>  
                  <artifactId>maven-jar-plugin</artifactId>  
              </plugin>  
          </plugins>  

      以上就是maven的一些 标签闲聊,还是有很多 工作中没有遇到的 如果 以上 有什么讲的不对。欢迎留言指正!!!

  • 相关阅读:
    VC++界面编程个性化你的工具栏图标(转)
    C/C++指令 #undef ,#ifdef, #ifndef,#if的用法(转)
    为自定义工具栏按钮添加消息响应函数
    VC++深入详解:函数的重载 (转)
    NP和P问题
    How To Compile A Kernel The Ubuntu Way
    【转】关闭对话框,OnClose和OnCancel MFC中屏蔽ESC和回车关闭对话框
    MFC学习笔记之ClassWizard
    《c专家编程》学习笔记一
    <转>C语言中的文件输入输出函数
  • 原文地址:https://www.cnblogs.com/920913cheng/p/10196945.html
Copyright © 2011-2022 走看看