maven的pom中如下配置resource有什么意义,默认打包不就是src与resource吗,为啥还要这么配?

作者站长头像
站长
· 阅读数 14
    <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
    </build>
回复
1个回答
avatar
test
2024-07-20

主要是这个有疑义:

<resource>
    <directory>src/main/java</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*</include>
    </includes>
</resource>

默认下只会编译src/main/java下的java文件,但可能有人就是在这里放了一些非java文件,例如xxxMapper.xml(正常应该放在src/main/resources下比较合理),那这些文件是没有打进包里去的,所以会加上这个,如果你确认src/main/java下没有需要打包的文件,那可以不用写。

此插件更多的是排除某些文件,如果项目中有些外部引用文件、类库太大了而且固定不变,但在开发多人协作时可能放到resources下做版本控制,方便团队所有人在开发时都能引用到不会报错,但实际正式环境部署时会直接在服务器某个位置事先放好了这个文件,打包时就用这个插件来排除下,不然每次打包都带上这个大文件,打出的包太大,部署也费劲。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容