maven 父子项目及其子项目相互依赖说明和配置

1.项目结构如图

2.demo和demos是demoTest的子项目,其中,demo项目,会依赖demos项目中的一个对象。注:一般来说,被依赖的项目,不会被发布,其应该单纯的作为一个被引用的包,但是该例子中,两个子项目其实都可以被发布,我们pom里面需要设置一下classifier为exel,不然会报错,这个参数已经在下面的pom中配置。

3.先创建demo和demos,再建一个文件夹demoTest,将他们放进去,然后在demoTest里面建一个pom.xml就好了,demoTest的pom如下。

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

    <groupId>com.example</groupId>
    <artifactId>demoTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!--    父级项目这里需要将其改为pom-->
    <packaging>pom</packaging>

    <modules>
        <!--        这里添加所有子项目-->
        <module>demo</module>
        <module>demos</module>
    </modules>

    <name>demoTest</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <!--        该项目依赖的父级项目-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--        父级项目暂时不放包-->
        <!--        <dependency>-->
        <!--            <groupId>org.springframework.boot</groupId>-->
        <!--            <artifactId>spring-boot-starter-web</artifactId>-->
        <!--        </dependency>-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.demo想引用demos,需要

*将demos利用maven命令install到maven库

*在demo的pom.xml中添加demos的包名

*可能还需如图所示配置demo的model,添加demos的包(个人感觉,配置好demo的pom应该就会自动引用了吧)

5.demo和demos的pom如下:

<?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>com.example</groupId>
        <artifactId>demoTest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> 父级项pom.xml的相对路径,一定要写,其不存在于公共库,不写路径,maven找不到的。
    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--引用demos项目,引用如果冒红
        1:则试试先将demos项目install一下到-->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>demos</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 配置的 classifier 表示可执行 jar 的名字,配置了这个之后,会打出2jar,一个是可以被其他项目引用的,一个是可执行的,可执行的名字比较长-->
                    <classifier>exel</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>demoTest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> 父级项pom.xml的相对路径,一定要写,其不存在于公共库,不写路径,maven找不到的。
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demos</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 配置的 classifier 表示可执行 jar 的名字,配置了这个之后,会打出2jar,一个是可以被其他项目引用的,一个是可执行的,可执行的名字比较长-->
                    <classifier>exel</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
发布者:songJian   点击数:1258   发布时间:2022-03-15 02:57:56   更新时间:2022-03-15 04:16:10
正在加载评论...
相关文章