Maven 最全教程,看了必懂,99% 的人都收藏了。。(4)

简介: Maven 最全教程,看了必懂,99% 的人都收藏了。。(4)

九、maven工程的依赖高级特性

① 依赖的传递性


image.png


WebMavenDemo项目依赖JavaMavenService1 JavaMavenService1项目依赖JavaMavenService2


pom.xml文件配置好依赖关系后,必须首先mvn install后,依赖的jar包才能使用。


WebMavenDemo的pom.xml文件想能编译通过,JavaMavenService1必须mvn install

JavaMavenService的pom.xml文件想能编译通过,JavaMavenService2必须mvn install


传递性:


image.png


在Eclipse中,为JavaMavenService2中增加了一个spring-core.jar包后,会惊喜的发现依赖的两个项目都自动的增加了这个jar包,这就是依赖的传递性。


注意:非compile范围的依赖是不能传递的。


② 依赖版本的原则:


1、路径最短者优先原则


image.png


Service2的log4j的版本是1.2.7版本,Service1排除了此包的依赖,自己加了一个Log4j的1.2.9的版本,那么WebMavenDemo项目遵守路径最短优先原则,Log4j的版本和Sercive1的版本一致。


2、路径相同先声明优先原则


image.png


这种场景依赖关系发生了变化,WebMavenDemo项目依赖Sercive1和Service2,它俩是同一个路径,那么谁在WebMavenDemo的pom.xml中先声明的依赖就用谁的版本。


③ 统一管理依赖的版本:


image.png


为了统一管理版本号,可以使用properties标签,里面可以自定义版本的标签名。在使用的地方使用${自定义标签名}


十、build配置

<build>
  <!-- 项目的名字 -->
  <finalName>WebMavenDemo</finalName>
  <!-- 描述项目中资源的位置 -->
  <resources>
    <!-- 自定义资源1 -->
    <resource>
      <!-- 资源目录 -->
      <directory>src/main/java</directory>
      <!-- 包括哪些文件参与打包 -->
      <includes>
        <include>**/*.xml</include>
      </includes>
      <!-- 排除哪些文件不参与打包 -->
      <excludes>
        <exclude>**/*.txt</exclude>
          <exclude>**/*.doc</exclude>
      </excludes>
    </resource>
  </resources>
  <!-- 设置构建时候的插件 -->
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.1</version>
      <configuration>
        <!-- 源代码编译版本 -->
        <source>1.8</source>
        <!-- 目标平台编译版本 -->
        <target>1.8</target>
      </configuration>
    </plugin>
    <!-- 资源插件(资源的插件) -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.1</version>
      <executions>
        <execution>
          <phase>compile</phase>
        </execution>
      </executions>
      <configuration>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <!-- war插件(将项目打成war包) -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.1</version>
      <configuration>
        <!-- war包名字 -->
        <warName>WebMavenDemo1</warName>
      </configuration>
    </plugin>
  </plugins>
</build>

配置好build后,执行mvn package之后,在maven工程指定的target目录里war包和文件都按照配置的生成了

image.png

好了,maven的所有的内容就整理完了。

最后推荐个最新最全的maven依赖项版本查询网站:

http://mvnrepository.com/

相关文章
|
Java 应用服务中间件 程序员
Maven教程--下(包括手动实现)
Maven教程--下(包括手动实现)
177 0
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
233 1
|
存储 Java 测试技术
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
2418 0
|
Java 应用服务中间件 Maven
idea配置本地maven保姆级教程
idea配置本地maven保姆级教程
2154 0
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
Java Linux Maven
Maven下载与安装详细教程
Maven下载与安装详细教程
373 0
|
Java Maven Spring
【操作宝典】IntelliJ IDEA新建maven项目详细教程
【操作宝典】IntelliJ IDEA新建maven项目详细教程
677 1
|
存储 Java Apache
【maven】maven下载、安装与配置详细教程
【maven】maven下载、安装与配置详细教程
4127 1
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
332 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
XML Java 测试技术
maven教程(4)
maven教程(4)
109 1

推荐镜像

更多