128.【Maven】(三)

简介: 128.【Maven】

(五)、第一个Maven项目 (IDea)

1.配置 Maven

2.创建Maven项目

3.设置插件

打包web项目打包成war; java工程打包成jar。

<!--  构建  -->
    <build>
        <!--设置插件-->
        <plugins>
            <!--      具体的配置插件      -->
            <plugin>
                <!--         这里需要我们的三件套       -->
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <!--        配置一些默认的项        -->
                <configuration>
                    <port>80</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

(六)、依赖管理

1.依赖配置

依赖指当前项目运行所需要的 jar, 一个项目可以设置多个依赖。

<!-- 设置当前项目所需要的所有 jar-->
<dependencies>
  <!-- 设置具体的依赖 -->
  <dependency>
    <!-- 依赖所属群组 id-->
    <groupId>junit</groupId>
    <!-- 依赖所属项目 id-->
    <artifactId>junit</artifactId>
    <!-- 依赖版本号 -->
    <version>4.12</version>
  </dependency>
</dependencies>

2.依赖传递

就是说假如B项目使用了A项目本身的依赖,那么B项目将会拥有A项目所有的依赖,然而A项目是不变的。

依赖具有传递性:

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系;
  • 间接依赖:被依赖资源如果依赖其他资源,当前项目间接依赖其他资源;

依赖传递的冲突问题:

  • 路径优先:当依赖中出现相同的资源时,层级越浅,优先级越高,层级越深,优先级越低;
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的;
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的;

3.可选依赖 (被动断)

可选依赖指对外隐藏当前所依赖的资源 - 不透明

当我们配置完这一项之后,假如别人引入我们的项目依赖,那么不会存在延申的依赖的。比如说我们在项目A中引入项目B,项目B的pom.xml的文件中在junit这个依赖,然后加入optional之后,我们就在项目A中看不到B中的Junit这个依赖。

<optional>true</optional>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <optional>true</optional>
</dependency>

4.排除依赖 (主动断)

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本 - 不需要

项目3中不添加 optional,我们这里在项目2中直接进行排除的操作。

<!-- 具体依赖-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <!-- 排除集合 -->
  <exclusions>
    <!-- 排除某一个具体的 -->
    <exclusion>
      <!-- 三件套 : 版本号就不用写了,因为一排除,就是排除所有版本-->
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

我们也发现没存在 junit衍生的版本。

5.依赖范围

  • 依赖的 jar 默认情况可以在任何地方使用,可以通过 scope 标签设定其作用范围
  • 作用范围
  • 主程序范围内有效 (main 文件夹范围内
  • 测试程序范围内有效(test 文件夹范围内
  • 是否参与打包(package 指令范围内

6.依赖范围传递性

带有依赖范围的资源在进行传递时,作用范围会受到影响:

相关文章
|
存储 Java Maven
|
数据安全/隐私保护
Maven-2
Maven-2
87 0
|
4月前
|
存储 前端开发 Java
Maven(一)
Maven(一)
79 0
Maven(一)
|
7月前
|
运维 Java Maven
Maven 特点
Maven是一个遵循统一规则、高度可扩展的Java项目管理工具,强调依赖管理和自动更新。它拥有庞大的库资源,支持构建JAR、WAR等不同输出类型,同时能自动生成项目站点和标准报告。Maven与版本控制系统集成,实现无缝发布管理。其向后兼容性允许轻松迁移旧版本模块,子项目能继承父项目的依赖。并行构建提升编译效率,而改进的错误报告提供更详细的故障排查支持。
|
Java 数据库连接 Maven
Maven介绍
Maven介绍
97 0
|
存储 Java 程序员
Maven详解
Maven详解
334 0
|
Java Maven 容器
关于Maven,你真的了解它吗?(下)
关于Maven,你真的了解它吗?(下)
|
Java 应用服务中间件 Maven
关于Maven,你真的了解它吗?(上)
关于Maven,你真的了解它吗?(上)
|
Java 测试技术 BI
Maven能够解决什么问题
Maven能够解决什么问题
156 0
|
存储 安全 IDE
maven你必须要掌握的
《基础系列》
165 0