1. maven相关知识点记录
  • mvn compile :编译源代码。
  • mvn deploy :发布项目。
  • mvn test-compile :编译测试源代码。
  • mvn test :运行应用程序中的单元测试。
  • mvn site :生成项目相关信息的网站。
  • mvn clean :清除项目目录中的生成结果。
  • mvn package :根据项目生成的 jar/war 等。
  • mvn install :在本地 Repository 中安装 jar 。
  • mvn eclipse:eclipse :生成 Eclipse 项目文件。
  • mvn jetty:run 启动 Jetty 服务。
  • mvn tomcat:run :启动 Tomcat 服务。
  • mvn clean package -Dmaven.test.skip=true :清除以前的包后重新打包,跳过测试类。
  1. Maven 坐标的含义?
<dependency>
          <groupId>org.mapstruct</groupId>
          <artifactId>mapstruct-processor</artifactId>
          <version>${mapstruct.version}</version>
          <scope>provided</scope>
      </dependency>

groupId :定义当前 Maven 项目隶属的实际项目。首先,Maven 项目和实际项目不一定是一对一的关系。比如 Spring FrameWork 这一实际项目,其对应的 Maven 项目会有很多,如 spring-core、spring-context 等。这是由于 Maven 中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId 不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果 groupId 只定义到组织级别,而后面我们会看到,artifactId 只能定义 Maven 项目(模块),那么实际项目这个层次将难以定义。最后,groupId 的表示方式与 Java 包名的表达方式类似,通常与域名反向一一对应。上例中,groupId 为 junit ,是不是感觉很特殊,这样也是可以的,因为全世界就这么个 junit ,它也没有很多分支。
artifactId :该元素定义当前实际项目中的一个 Maven 项目(模块)。推荐的做法是使用实际项目名称作为 artifactId 的前缀。比如上例中的 junit ,junit 就是实际的项目名称,方便而且直观。在默认情况下,Maven 生成的构件,会以 artifactId 作为文件头。例如 junit-3.8.1.jar ,使用实际项目名称作为前缀,就能方便的从本地仓库找到某个项目的构件。
version :该元素定义了使用构件的版本。version可以配置在 <properties> <mapstruct.version>1.3.0.Final</mapstruct.version> </properties>中。

  1. Dependencie 其他的坐标含义 面试经常问
  • scope :依赖项的适用范围。
    compile :默认值,适用于所有阶段(开发、测试、部署、运行),本 jar 会一直存在所有阶段。
    provided :只在开发、测试阶段使用,目的是不让 Servlet 容器和你本地仓库的 jar 包冲突 。如 servlet.jar 。
    runtime :只在运行时使用,如 JDBC 驱动,适用运行和测试阶段。
    test :只在测试时使用,用于编译和运行测试代码,不会随项目发布。
    system :类似 provided ,需要显式提供包含依赖的 jar 包,Maven 不会在 Repository 中查找它。
    import :用于一个 对另一个 的继承。非常重要,通过它,可以实现类似 《Maven Spring BOM (bill of materials)》 的功能。

  • exclusions :排除项目中的依赖冲突时使用。