Maven工程问题

Maven工程问题

建立一个父模块,里面加入两个子模块
在这里插入图片描述
其中vhr-model是一个普通的模块,vhr-web是一个SpringBoot模块,vhr-model和vhr-web都是vhr模块的子模块,vhr-web的子模块依赖于vhr-model的子模块
pom.xml(vhr):

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
    <groupId>org.dong</groupId>
    <artifactId>vhr</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
   <modules>
        <module>vhr-model</module>
        <module>vhr-web</module>
    </modules>

pom.xml(vhr-model):

   <parent>
        <artifactId>vhr</artifactId>
        <groupId>org.dong</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>vhr-model</artifactId>

pop.xml(vhr-web):

    <parent>
        <groupId>org.dong</groupId>
        <artifactId>vhr</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>vhr-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>vhr-web</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>
        <dependency>
            <groupId>org.dong</groupId>
            <artifactId>vhr-model</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

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

在打包的过程中,vhr-web不能直接单独打包,因为vhr-web对vhr-model有依赖,否则会报错。如果在parent模块中加入如下代码,在打包父模块的过程程中会把所有的子模块也全部打包,但是子模块不能独立打包,去掉之后子模块才能独立打包,但是有依赖于其他子模块的模块是不能独立打包的。

<modules>
        <module>vhr-model</module>
        <module>vhr-web</module>
</modules>

SpringBoot-start-parent中Resource问题

    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <excludes>
          <exclude>**/application*.yml</exclude>
          <exclude>**/application*.yaml</exclude>
          <exclude>**/application*.properties</exclude>
        </excludes>
      </resource>
    </resources>

说明:建立一个Maven工程和两个配置文件测试,配置文件中加入a.name=${dong.name}
在这里插入图片描述
pom.xml:

    <groupId>org.dong</groupId>
    <artifactId>demo06</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <dong.name>www.dong.name</dong.name>
    </properties>

打包之后,两个配置文件并没有想象中的把${dong.name}替换为www.dong.name,这是由于没有配置pom.xml文件,配置之后

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>a.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

a.properties文件正常运行,${dong.name}成功替换为www.dong.name,而b.properties并没有成功,显然是include的作用将配置文件加载进去,但是因为过滤器的缘故所以b.properties被过滤掉,没有被打包进去

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>a.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>a.properties</exclude>
                </excludes>
            </resource>
        </resources>
    </build>

加入以上配置之后就会发现,b.properties没有滤掉,而是被打包进来,但是${dong.name}也没有替换为www.dong.name,这就是resource配置的作用

spring-boot-starter-parent问题

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<!--
1.定义java编译版本
2.定义编码格式
3.定义依赖版本号
4.项目打包配置
5.自动化资源过滤
6.自动化插件配置
-->

在这里插入图片描述
如果配置文件中同一个配置文件用$符号引用了本文件中的变量,那么就需要resource.delimiter中@符号来已引用pom.xml中用properties配置的变量

a.name=dong
b.name=${a.name}
c.name=@dong.name@

在这里插入图片描述
上图中是parent的父依赖,里面定义了编译版本号
在这里插入图片描述
Maven是单继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值