美文网首页
maven pom配置

maven pom配置

作者: 艾比ab | 来源:发表于2020-03-17 22:49 被阅读0次

    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

    相关文章

      网友评论

          本文标题:maven pom配置

          本文链接:https://www.haomeiwen.com/subject/aaqxyhtx.html