idea + spring boot, 重编译会删除 target 里的资源文件是怎么回事

2019-09-21 08:48:48 +08:00
 micean

这是哪一块配置的原因?导致我现在改个模板文件都要自己复制到 target 里,没办法好好工作了

4955 次点击
所在节点    问与答
14 条回复
passerbytiny
2019-09-21 09:08:43 +08:00
😰
请先了解“Maven target folder”、“maven clean”、“maven package”,最好再额外了解小“classes”、“dest”目录。
micean
2019-09-21 09:15:06 +08:00
@passerbytiny

不是 maven 本身的事情
pom 都没变过
把当前分支并到其他分支,再切换回当前分支就这样了,怀疑是 idea 的原因,但是 setting->compile 那里点了几下没啥用
Solace202
2019-09-21 09:21:32 +08:00
target 本身就是 mave 编译后放置编译后文件的文件夹,class 文件,war 包啥的,每次重新编译肯定会覆盖之前的啊
Solace202
2019-09-21 09:25:01 +08:00
资源文件为啥放 target 里?建议了解下每个文件夹的功能
micean
2019-09-21 09:34:43 +08:00
@passerbytiny
@Solace202

我自己没说清,补充了一下场景
AlisaDestiny
2019-09-21 09:39:07 +08:00
src 目录才是你放东西的地方,target 目录全是自动生成的东西,配置好 pom 文件,src 里的东西会自动编译 /复制进 target 目录。
Bryan0Z
2019-09-21 09:45:54 +08:00
楼上都没理解问题吧,Maven 会执行 compile 前会自动执行 clean,这一步会删除 target 文件夹下面所有文件。
关于楼主的问题,可以在 pom 文件里手动指定 resources 的处理逻辑,比如每次编译都复制到指定文件夹,这样就不会有问题了
micean
2019-09-21 09:55:28 +08:00
@Bryan0Z

是运行时发生的,不是启动时删除的
比如说我修改了 /resources/tamplates/下的某个模板文件
1. 如果我 recompile 整个 tamplates,tamplates 里的文件被复制到 target 相应目录里。请求读取这个文件之后,target 相应目录的大部分模板文件(包括一部分未修改的)会被删除掉
2. 如果我复制这一个模板文件到 target 相应目录,再 recompile 某个 java 文件。请求读取这个文件之后,target 相应目录的这个模板文件会被删除掉
Bryan0Z
2019-09-21 10:02:04 +08:00
@micean 对呀,每次你 recompile,target 下面都会被清空,无论你的程序对于 resources 做了什么修改,都不会在下次编译被保留。我觉得 SpringBoot 自带的多配置管理更适合你
micean
2019-09-21 10:05:28 +08:00
@Bryan0Z

recompile 不会被清空,因为是 idea 执行的不是 maven 啊,maven 也要加 clean 才会清空
BLK
2019-09-21 10:55:09 +08:00
重新编译不是就会删除 target 的文件,然后再重新覆盖一边嘛
micean
2019-09-21 11:15:37 +08:00
折腾了一上午,rebuild 整个工程又 tm 正常了……跟重启电脑有异曲同工之妙
yqsas
2019-09-21 12:11:10 +08:00
遇到过,idea 和 maven 版本都一样,一个电脑没问题,一个不能在 target 编译出 resources 的文件,时好时坏没找到原因
leey
2019-09-21 17:26:04 +08:00
我遇到过,检查是否将 resources 文件夹在 idea 里设为资源文件夹,如果没有的话,可以右键 resources 文件夹,选择菜单 Mark Directory as Sources Root。如果用 kotlin,某些 kotlin 版本也会有这个问题。更换 kotlin 版本,还有 kotlin 编译插件的版本

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/602726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX