在开发一个Java项目时,项目文件是如何组织的?
这里 使用 Maven 构建 来说明一下 一个Java项目的文件目录都有哪些?
单应用
1. 建立一个 文件夹,这个文件夹包括了 项目的 所有需要的文件
2. 在当前文件夹下,需要建立一个 pom.xml 文件,表明 是用 Maven 来构建项目。如果使用的是其他的构建工具,如gradle,则是 gradle的文件。
需要注意的是,pom.xml 的 打包方式设置为 jar ,或者 war,因为是 单应用。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wxj</groupId>
<artifactId>testjg</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>testjg</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.18</version>
</dependency>
</dependencies>
</project>
3. 再当前文件夹下建立一个 src 名字的 文件,所有 源码相关的都是再这个文件夹下,包括 java文件 和 属性文件
4. 再当前文件下 建立的其他文件,用来辅助项目,比如一些 说明文件,版本变更记录等等
至此,一个 项目结构就完成了。只不过里面没有任何内容。
5. 在src 文件夹下,建立两个文件夹,名为 main / test ,main 文件夹 放源码文件,test文件夹放测试相关的源码文件
6. 在 main / test 文件夹下 再建两个文件夹,名为 java / resources ,java 文件夹下 存放 java源码文件,resources 文件夹下存放 资源文件
多模块拥有
多模块应用 类似 在项目文件夹下 存在 多个 单体应用,每个单体应用 都符合上面的文件结构。唯一的不同是,项目文件夹下的pom.xml 设置的 打包方式 是 pom ,并且 指定 应用模块。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wxj</groupId>
<artifactId>testjg</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>testjg</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/>
</parent>
<modules>
<module>m1</module>
<module>m2</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.18</version>
</dependency>
</dependencies>
</project>