Skip to content

项目结构

创建Maven

image-20260305101927007

项目结构

my-project

├── pom.xml

└── src
    ├── main
    │   ├── java
    │   │   └── com/example/project
    │   │       └── App.java
    │   │
    │   ├── resources
    │   │   └── application.properties
    │   │
    │   └── webapp        (Web项目才有)
    │       ├── WEB-INF
    │       └── index.jsp

    └── test
        ├── java
        │   └── com/example/project
        │       └── AppTest.java

        └── resources
            └── test.properties

src

main

存放 正式代码(生产代码)

  • java

Java 源代码。

  • resources

存放 配置文件 / 静态资源文件。这些文件 会被打包进 classpath

application.properties
application.yml
logback.xml
mybatis.xml
mapper.xml
  • webapp

如果是 Java Web 项目(Servlet / JSP) 才有

test

测试代码,测试代码不会被打包

  • java

存放java代码

  • resources

存放测试代码中使用的 配置文件 / 静态资源文件

target

编译后生成的文件将存放在target目录中。这个目录 可以删除,重新 mvn package 会生成。

项目结构:

target
 ├── classes
 ├── test-classes
 ├── generated-sources
 └── demo-1.0.jar

classes

存放 src/main/java 编译后的字节码文件。它保持了你在 src/main/java 中的包结构,同时也会把 src/main/resources 下的配置文件(如 application.yml)拷贝到这里。

generated-sources

generated-sourcesMaven 在构建过程中自动生成的源码目录,用于存放 工具或插件生成的 Java 源代码,而不是开发者手写的代码。

有些工具会 自动生成 Java 代码,例如:

  • 注解处理器
  • ORM 代码生成
  • API 代码生成
  • gRPC / protobuf

这些代码需要参与编译,但又 不应该放在 src/main/java

test-classes

测试字节码

存放 src/test/java 编译后的字节码文件,它保持了你在 src/test/java 中的包结构。test-classes中的代码仅用于测试,不进入jar

[artifactId]-[version].jar

[artifactId]-[version].jar (或 .war): 这是最终的可执行文件。jar包含了静态资源文件,这些文件是只读的