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.依赖范围传递性

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

相关文章
|
8月前
|
数据安全/隐私保护
Maven-2
Maven-2
53 0
|
12天前
|
Java Maven 开发工具
Maven 特点
Maven是一个强大的Java项目管理工具,其特点包括:遵循统一规范的项目设置,支持跨工程共享;具备自动更新依赖的功能,并拥有庞大的库资源;可扩展,允许用户编写Java或脚本插件;几乎无需额外配置即可使用新功能;基于模型的构建系统,能自动生成JAR、WAR等格式的输出;能创建一致性项目站点,包含标准报告和自定义文档;支持发布管理和源代码管理集成;具有向后兼容性,方便旧版本迁移;子项目能继承父项目的依赖;并行构建提升编译效率;提供改进的错误报告,链接到详细解释页面。
|
1月前
|
存储 Java 关系型数据库
|
10月前
|
Java 数据库连接 Maven
Maven介绍
Maven介绍
51 0
|
8月前
|
Java 应用服务中间件 Linux
01Maven - Mave介绍
01Maven - Mave介绍
24 0
|
8月前
|
安全 Java 应用服务中间件
Maven-1
Maven-1
33 0
|
10月前
|
存储 Java 程序员
Maven详解
Maven详解
274 0
|
11月前
|
Java 项目管理 Maven
|
JavaScript IDE Java
一文搞定Maven
本文讲解Maven的入门讲解
256 0
一文搞定Maven