Maven更新项目后项目结构发生变化,源文件夹的包含和排除模式也发生变化

Project structure changed after Maven update project, Inclusion and exclusion patterns to source folder changed too

这是最初开发的项目结构:

src/
src/main/java
    com.company.project.module1.bean
    com.company.project.module1.controller
    com.company.project.module1.service
    com.company.project.module1.dao
src/main/resources
src/test/
src/test/resources

点击Maven --> "Update Project"项目后,完整的项目结构改变如下:

src/
    com.company.project.module1.bean
    com.company.project.module1.controller
    com.company.project.module1.service
    com.company.project.module1.dao
src/main/java
    com.company.project.module1.bean
    com.company.project.module1.controller
    com.company.project.module1.service
    com.company.project.module1.dao
src/main/resources
src/test/
src/test/resources

所有 java class 文件 "copied" 放入 src/ 文件夹。

当我检查项目属性时,这些配置位于 "Java Build Path" --> "source"--> src/:

在 "Update Project" 通过 Maven 配置之前:

included:**/*.java
excluded:src/main/java, src/main/resources, src/main/test, src/test/resources

"Update Project" 通过 Maven 配置后,这里是配置的结果更改:

included:**/*.java
excluded:(None)

哪个配置,Maven (pom.xml) 或 Spring 配置,负责项目结构的这种变化? settings/configuration 将引导它恢复到最初的项目结构。

(简短说明:Maven 和 Spring Nature "Enabled" 在项目中。符号 'S' 和 'M' 显示在项目文件夹中)

按照步骤项目 --> 右键单击​​ --> 属性 -->:

Java Build Path --> sources --> src --> Delete
src/main/java --> edit --> output folder: <project name>/target/classes
src/main/java --> edit --> included: **/*.java
src/main/java --> edit --> excluded: (None)

这些步骤已删除 src/ 文件夹并使 src/main/java 成为包含 java class 个源文件的基础源文件夹,这样就恢复了初始项目结构。

pom.xml 文件配置与此问题相关。由于 pom.xml 中的以下代码,它正在将所有 java 源文件复制到 src/ 文件夹。通过更改它,它将修复带有源文件夹的项目结构。

<build>
<sourceDirectory>src</sourceDirectory>
<resources>
   <resource>
       <directory>src</directory>
       <excludes>
           <exclude>**/*.java</exclude>
       </excludes>
   </resource>
</resources>
</build>

将此代码替换为以下代码:

<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
   <resource>
       <directory>src/main/resources</directory>
       <excludes>
           <exclude>**/*.java</exclude>
       </excludes>
   </resource>
</resources>
</build>