maven继承关系配置

2025-11-23 09:43:21

1、通过之前的演示现在可以发现一个问题,几乎每一个pom.xml文件都需要进行如下的几项基本配置:属性、相关插件。

于是这个时候就有可能产生这样的一些问题:假设你现在要进行开发的是一个公司的庞大项目,那么这个庞大的项目会存在有许多的子项目。

maven继承关系配置

2、假设现在最大的副项目为:base,这个项目将需要提供一个公共的pom.xml文件,所以这个项目在搭建的时候应该搭建一个最基础的maven项目环境,而重点就应该放在pom.xml文件的编写上,由于该项目只具备有一个pom功能,这个项目的类型就应该设置为pom。

建立base/pom文件。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.gwolf</groupId>

  <artifactId>base</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging> 

<!-- 定义一个父pom.xml文件,所以此处必须为pom -->

  <name>base</name>

  <url>http://maven.apache.org</url>

  <properties> <!-- 在以后的开发之中,所有的版本都交给base完成 -->

       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <jdk.version>1.8</jdk.version>

        <junit.version>4.12</junit.version>

        <spring.version>4.3.12.RELEASE</spring.version>

  </properties>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

  

   

  <build> <!-- 定义所有要使用的相关的处理插件 -->

    <finalName>base</finalName>

    <plugins>

        <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>

                        <source>${jdk.version}</source>

                        <target>${jdk.version}</target>

                        <encode>${project.build.sourceEncoding}</encode>

                </configuration>

        </plugin>

        

        <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-source-plugin</artifactId>

                <configuration>

                        <encode>${project.build.sourceEncoding}</encode>

                </configuration>

                

                <executions>

                        <execution>

                                <id>sources</id>

                                <goals>

                                        <goal>jar</goal>

                                </goals>

                        </execution>

                </executions>

        </plugin>

    </plugins>

  </build>

</project>

maven继承关系配置

3、定义一个父pom.xml文件,所以此处必须为pom。

maven继承关系配置

4、在属性中定义版本,在以后的开发之中,所有的版本都交给base完成 

maven继承关系配置

5、定义所有要使用的相关的处理插件。

maven继承关系配置

6、此时所有的核心的配置选项都定义在父项目之中,而后每一个子项目都需要引用这个父项目的相关定义。

假设现在公司里面需要创建一个crm的子项目,于是这个时候依然创建一个普通的maven项目,为了演示方便,直接建立一个maven的web项目,这个项目的版本一定要由父项目来决定。

修改crm/pom.xml文件,实现继承关系。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <parent>

        <groupId>com.gwolf</groupId>

        <artifactId>base</artifactId>

        <version>0.0.1-SNAPSHOT</version>

  </parent>

  

  <modelVersion>4.0.0</modelVersion>

  <artifactId>crm</artifactId>

  <packaging>war</packaging>

  <name>crm Maven Webapp</name>

  <url>http://maven.apache.org</url>

  

  <dependencies>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-core</artifactId>

            <version>${spring.version}</version>

        </dependency>

        

          

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>${junit.version}</version>

            <scope>test</scope>

        </dependency>

        

        

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>javax.servlet-api</artifactId>

            <version>3.1.0</version>

            <scope>provided</scope>

        </dependency>

  </dependencies>

  

  <build>

    <finalName>crm</finalName>

  </build>

</project>

maven继承关系配置

7、相关的属性以及配置的插件都会自动的通过父项目继承而来。

实际上在整个父类的开发里面也提供有一些依赖包的管理问题,也就是说父类里面直接导入好所需要的开发包。

在base/pom.xml文件里面定义要使用的开发包。

<dependencyManagement>

        <dependencies>

                <dependency>

                    <groupId>javax.servlet</groupId>

                    <artifactId>javax.servlet-api</artifactId>

                    <version>3.1.0</version>

                    <scope>provided</scope>

                </dependency>

        </dependencies>

  </dependencyManagement>

maven继承关系配置

8、这个时候对于子项目而言,实际上也需要继续导入开发包,与之前最大的区别是不需要管理版本编号问题了。

maven继承关系配置

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢