Maven复制Angular(Nx)项目文件失败:ts-node-cwd无法复制
排查Nx+Spring Boot集成中maven-resources-plugin复制ts-node-cwd失败的问题
1. 检查maven资源插件的过滤与排除规则
maven-resources-plugin默认的资源过滤可能会破坏特殊文件,或者你不小心配置了错误的排除规则:
- 打开pom.xml,检查
maven-resources-plugin的<configuration>块,确认<excludes>里没有误写**/ts-node-cwd - 给该插件添加
<filtering>false</filtering>,避免过滤处理ts-node生成的特殊文件 - 也可以显式添加
<includes>指定需要复制的文件,缩小扫描范围
2. 验证ts-node-cwd文件的实际属性
ts-node-cwd可能是符号链接或零字节文件,maven复制这类文件会出现异常:
- Linux/macOS下执行
ls -l src/main/resources/[你的Nx项目路径]/ts-node-cwd,Windows下用dir /a src\main\resources\[你的Nx项目路径]\ts-node-cwd,查看文件是否为符号链接或空文件 - 如果是符号链接,在maven-resources-plugin里添加
<useSymbolicLinks>true</useSymbolicLinks>配置(Windows环境可能需要管理员权限) - 如果是空文件,删除后重新执行
npm install或nx build,让ts-node重新生成该文件
3. 调整前端插件的执行时机和输出目录
不要直接在src/main/resources中存放Nx项目,源码目录不应包含构建产物:
- 把frontend-maven-plugin的构建目标(比如
nx build)绑定到generate-resources阶段,确保在maven复制资源前完成前端构建 - 让frontend-maven-plugin把产物输出到
target/frontend-dist这类临时目录,再让maven-resources-plugin从这个目录复制到classpath,避免源码目录中混入临时文件
4. 检查ts-node版本与配置
你使用的ts-node 10.9.1可能存在路径生成的bug:
- 尝试升级到10.x分支的最新版本(比如10.9.2),或者直接升级到12+的稳定版
- 检查tsconfig.json或.nxrc中的cwd配置,确认生成的ts-node-cwd路径在maven的资源扫描范围内
5. 临时跳过该文件复制(应急方案)
如果这个文件不影响应用运行,直接在maven-resources-plugin里排除它:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <configuration> <excludes> <exclude>**/ts-node-cwd</exclude> </excludes> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者natyus
相关产品推荐
相关产品推荐

