Maven

121 阅读2分钟

Maven

Maven是Apache的一款开源项目管理工具,使用项目对象pom.xml管理项目的构建。Maven中每个项目都相当于一个对象,对象(项目)与对象(项目)之间是有关系的(依赖、继承、聚合),实现Maven项目可以更方便的实现导jar包、拆分项目等。conf目录:下面有一个非常重要的配置文件,maven核心配置文件:settings.xml
不在本机的一切仓库,都是远程仓库:分别为中央仓库和本地私服仓库(公司自己搭建的)
默认远程仓库使用Apache提供的中央仓库mvnrepository.com/
本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件
在setting.xml中配置阿里云镜像

<mirror>
  <!--指定镜像ID 可自己起名-->
  <id>aliyun</id>
  <!--匹配中央仓库 可自己改名-->
  <mirrorOf>central</mirrorOf>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>

优先级别:

截屏2022-11-05 上午10.07.46.png

在setting.xml中配置JDK

<profile>
  <id>jdk-15</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>15</jdk>
  </activation>
  <properties>
    <maven.compiler.source>15</maven.compiler.source>
    <maven.compiler.source>15</maven.compiler.source>
    <maven.compiler.compileVersion>15</maven.compiler.compileVersion>
  </properties>
</profile>

在setting.xml中配置配置本地仓库

<localRepository>/Users/u/.m2/repository</localRepository>
  1. POM工程 逻辑工程,用在父级工程或聚合工程,用来做jar包的版本控制
  2. JAR工程 将会打包成jar, 即常见的本地工程 Java Project
  3. WAR工程 打包成war 发布在服务器上

maven目录结构

src/main/java java源代码
src/main/resources 资源文件
src/test/java 测试类
target 编译后内容放置的文件夹
pom.xml maven配置文件 配置项目之间的关系,包括依赖关系

maven项目性质

  1. 项目1依赖项目2,项目2依赖mybatis,项目1在pom.xml文件中引入项目2,项目1可以直接使用mybatis
    1.1 第一原则
    最短路径优先 A->B->C->D(2.0) A->E(1.0) 用E中的版本
    1.2 第二原则
    最先声明原则 A->B->D(1.0) A->B->C(1.0) 在pom.xml里最先看到B,用D的版本
  2. 排除依赖
<exclusion>
    <groupId> ... </groupId>
    <artifactId> ... </artifactId>
</exclusion>

pom配置

  1. 配置文件一般放在src/resources下,打包后放在target的class下,想把非resouces下的文件也打包到class下,需要配置。配置后设置路径下的资源问价都会被打包。
  2. 多个项目使用不同jdk
<build>
  <plugins>
   <plugin>
     <groupId>org.apache.tomcat.maven</groupId>
     <artifactId>tomcat7-maven-plugin</artifactId>
     <version>2.1</version>
     <configuration>
       <path>/shiro</path>
       <port>8080</port>
       <uriEncoding>UTF-8</uriEncoding>
       <url>http://localhost:8080/shiro</url>
       <server>Tomcat7</server>
     </configuration>
   </plugin>

    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.7</version>
      <configuration>
        <connectors>
          <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
            <port>8888</port>
            <maxIdleTime>30000</maxIdleTime>
          </connector>
        </connectors>
        <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
        <contextPath>/</contextPath>
      </configuration>
    </plugin>
  </plugins>
</build>

操作maven

  1. install
    本地安装 包含编译、打包,安装到本地仓库
    编译javac。 打包 将代码打包成jar,保存到本地仓库
  2. clean 清楚已编译的信息
  3. compile 只编译javac
  4. package 包括编译和打包两个部分。 install和package区别:
    package完成打包、编译,但没把打包好的包部署到本地或远程maven仓库。 install完成了编译、单元测试、打包,部署到本地仓库但没有部署到远程仓库