Maven最佳实践之一个好的parent依赖基础

“Maven最佳实践之一个好的parent依赖基础”是指在使用Maven构建项目时,良好的父依赖是保证项目构建质量、维护成本及后期升级的重要因素。下面我将详细讲解“Maven最佳实践之一个好的parent依赖基础”的完整攻略。

什么是一个好的parent依赖

一个好的parent依赖应符合以下原则:

  1. 遵循单一职责原则:父依赖只应提供共通性的配置和依赖,而不应该包含任何业务相关的配置和依赖。
  2. 从简原则:尽可能精简父依赖的配置和依赖,保证它足够通用化。
  3. 自我完备原则:保证父依赖足够完备,即所有子项目使用父依赖之后,不应该再引入额外的依赖。
  4. 易于维护和升级:保证父依赖易于维护和升级,不会因多项目和多模块而导致混乱。

如何定义一个好的parent依赖

可以通过以下方案来定义一个好的parent依赖:

声明版本和依赖管理

在父依赖的pom.xml中声明版本和依赖管理,如下所示:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.0</version>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

定义插件

在父依赖的pom.xml中定义常用的插件及其版本,如下所示:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

定义通用插件配置

在父依赖的pom.xml中定义常用插件的通用配置,以避免重复配置,如下所示:

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
            <compilerArgs>
              <arg>-Xlint:deprecated</arg>
              <arg>-Xlint:unchecked</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <forkCount>1</forkCount>
            <reuseForks>false</reuseForks>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
            <systemPropertyVariables>
              <someKey>someValue</someKey>
            </systemPropertyVariables>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

示例

示例一:创建父依赖

创建一个新项目,作为父依赖,用于管理通用依赖和配置。在该项目的pom.xml文件中就可以进行如上述步骤的配置。

示例二:使用父依赖

在新项目中引入父依赖,如下所示:

<project>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

这样,新项目就能够继承父依赖的配置和依赖,从而保证项目的质量和维护成本。

阅读剩余 69%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Maven最佳实践之一个好的parent依赖基础 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • jQuery在html有效在jsp无效的原因及解决方法

    针对“jQuery在html有效在jsp无效的原因及解决方法”的问题,以下是详细的攻略: 1. 原因分析 在html中使用jQuery可能无任何问题,但是当在JSP中使用jQuery时,经常会出现无法正常使用jQuery的问题。这是由于JSP与HTML的渲染过程不同所导致的。在JSP中,当我们将jQuery文件作为静态文件引入时,由于JSP需要解析,所以在进…

    Java 2023年6月15日
    00
  • java中的日期和时间比较大小

    Java日期和时间比较大小的攻略 在Java中,我们可以使用Java.util.Date类和Java.time.LocalDateTime类来操作日期和时间。其中,Date类和早期的Java版本一同发布,而LocalDateTime则是Java 8引入的新类。在比较两个日期是否相等或者比较大小时,我们需要注意它们的精确度和格式。 比较Date类型的日期和时间…

    Java 2023年5月20日
    00
  • 5个HTML5的常用本地存储方式详解与介绍

    5个HTML5的常用本地存储方式详解与介绍 本文将为大家介绍5种常用的HTML5本地存储方式,并给出对应的示例说明。 1. Cookies 介绍:Cookie是存储在用户计算机上的小数据文件,用于存储与网站相关的信息。浏览器访问网站时,会从响应的HTTP头中读取Cookie信息,并将信息保存在本地。下次浏览器请求同一网站时,Cookie信息会被发送到服务器。…

    Java 2023年6月15日
    00
  • hibernate和mybatis对比分析

    文本格式要求: 标题使用#号表示,#号数量表示标题等级,一级标题一个#号,二级标题二个#号,以此类推 代码块使用三个反引号括起来,并标明代码语言 Hibernate和MyBatis对比分析 什么是Hibernate? Hibernate是一个基于Java的ORM框架,即对象关系映射框架。它可以将Java类映射到关系型数据库中的表,使得Java程序员可以使用面…

    Java 2023年5月19日
    00
  • Java中的逃逸问题心得

    Java中的逃逸问题心得 在Java中,对象的生命周期是由GC负责控制的,当对象不再被程序引用时,GC会将其回收,释放内存。但是,Java中还存在一个逃逸问题,当对象被其他不相关的对象引用时,该对象的生命周期就会扩展,造成不必要的内存开销,降低程序的性能。 什么是逃逸分析? 在了解逃逸问题之前,我们需要先了解逃逸分析。逃逸分析是一种指令流分析技术,其主要目的…

    Java 2023年5月26日
    00
  • Java线程等待用法实例分析

    Java线程等待用法实例分析 在Java编程中,线程等待是掌握多线程知识的重要一环。当在某些情况下需要进行线程同步、控制程序执行顺序时,常常需要使用线程等待。本文将详细讲解Java线程等待的用法,并通过两个实例对其进行示例说明。 等待与通知 在线程中,等待与通知是两个相互关联的概念。等待指的是线程暂停自身的执行,并且进入等待状态,等待系统发出通知,来唤醒其继…

    Java 2023年5月18日
    00
  • java 学习笔记(入门篇)_java程序helloWorld

    Java 学习笔记(入门篇)_Java程序HelloWorld 完整攻略 什么是Java Java 是一种高级编程语言,具有面向对象、跨平台、安全性强等特点,被广泛应用于互联网和企业应用等领域。 学习Java的前置知识 学习Java需要具备以下基础知识: 编程语言基础概念 面向对象编程思想 常见数据结构和算法 Java 学习的步骤 1. 下载安装Java环境…

    Java 2023年5月19日
    00
  • Java代码中4种字符串拼接方式分析

    Java代码中4种字符串拼接方式分析 在Java开发中,我们经常需要进行字符串的拼接操作。本文将详细介绍Java代码中的4种字符串拼接方式,包括StringBuilder、StringBuffer、String.format()和”+”拼接方式,并分析它们之间的优缺点。 1. StringBuilder StringBuilder是一个可变的字符串类,它提供…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部