maven pom配置

pom.xml常用的标签

通常在父pom的标签

<dependencyManagement>

dependencyManagement 和 dependencies区别:

1)Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

2)dependencyManagement里只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

modules 聚合(或多模块)

为了能一次构建两个(或多个)模块,就需要再创建一个pom.xml来对多个模块进行集中的操作,也就是聚合。

案例

spring boot maven pom依赖

spring-boot-starter-web (pom packaging)-> spring-boot-parent (pom packaging)  ->spring-boot-dependencies (pom packaging)

一个百人团队的maven 依赖的架构

module (jar packaging)-> (pom packaging) project  -> common-dependencies (pom packaging) 公司级别公共的jar包管理

子pom的常用标签

<parent> 对父pom的依赖。

<distributionManagement> 指定Maven分发构件(deploy)的位置

案例

<distributionManagement>   

    <repository>   

      <id>nexus-releases</id>   

      <name>Nexus Release Repository</name>   

      <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>   

    </repository>   

    <snapshotRepository>   

      <id>nexus-snapshots</id>   

      <name>Nexus Snapshot Repository</name>   

      <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>   

    </snapshotRepository>   

  </distributionManagement>   


<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>


<profile>

简单说一下,maven的profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的目的。


maven依赖冲突

所谓的依赖冲突,举例说明,工程A依赖B和C,但是B和C分别依赖不同版本的D。那么对于工程A来说,到底是依赖了哪个版本的D呢?

解决依赖冲突有2个基本的原则:

短路优先原则。 比如存在如下的两个依赖路径,那么A最终会依赖version2的X版本。

A->B->C->X(version1)

A->D->X(version2)

如果路径长度相同,那么先声明先解析。

dependencyManagement 和 dependencies区别:

https://blog.csdn.net/yuyecsdn/article/details/90229024

maven中的distributionManagement的作用

https://blog.csdn.net/qq_31924435/article/details/53745811

maven pom项目结构

https://zhuanlan.zhihu.com/p/88159905

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Maven概述 Maven定义Maven是一个项目管理和整合,统一管理jar包的工具;Maven为开发者提供了一套...
    THQ的简书阅读 4,214评论 0 0
  • 简介 什么是 pom? POM 是 Project Object Model 的缩写,即项目对象模型。 pom.x...
    4ea0af17fd67阅读 3,362评论 0 1
  • The Basics POM文件包含关于项目的所有必要信息,以及在构建项目过程中使用的插件配置。它是一个对于"wh...
    亼珏阅读 5,825评论 0 2
  • 转载自:https://blog.csdn.net/u010425776/article/details/5202...
    先生zeng阅读 4,101评论 0 0
  • 【文章仅供非商业用途或交流学习使用】 简介 使用ANSI C语言编写,遵守BSD协议。 ...
    夏天的风风风阅读 3,805评论 0 50

友情链接更多精彩内容