如何从2个不同的父母创建maven模块?

时间:2017-02-08 12:12:01

标签: java spring maven spring-boot module

我将新的maven模块添加到项目中。它将使用spring-boot。旧模块没有使用它。所以,我的新模块必须是父项目的子项,但同时必须是spring-boot-starter-parent的子项。如何让我的项目成为2个不同父项的孩子?

我现在的父母

<parent>
    <groupId>com.somegroup</groupId>
    <artifactId>Parent</artifactId>
    <version>1.0</version>
</parent>

Spring-boot parent

<parent>
    <!-- Your own application should inherit from spring-boot-starter-parent -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
</parent>

2 个答案:

答案 0 :(得分:3)

由于Maven项目只能有一个父项,因此您可以使用不同的方法。您可以在依赖关系管理部分中导入spring-boot-dependencies而不是继承,并保留原始父级。

<parent>
    <groupId>com.somegroup</groupId>
    <artifactId>Parent</artifactId>
    <version>1.0</version>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

您可以阅读the official documentation中的约束,这些约束基本上是关于更改Spring Boot提供的依赖项版本的方式。

答案 1 :(得分:0)

您需要定义另一个位于spring-boot和您自己的模块之间的父级,例如:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
    </parent>

    <groupId>com.greg</groupId>
    <artifactId>myparent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>

</project>