Java项目五种创建方式示例总结
作者:学IT的周星星
1. 普通 Java 项目(Plain / Standard Java Project)
用途
适合控制台工具、学习练习、算法、单文件或少量类的程序,不依赖 Web 容器或复杂构建工具。
典型目录结构
MyApp/ ├─ src/ │ └─ com/example/app/ │ └─ Main.java ├─ lib/ (可选,第三方 jar) ├─ out/ (编译输出,可由 IDE 管理) └─ README.md
如何创建
IDE(IntelliJ IDEA / Eclipse):New Project → Java → 指定 SDK → 新建 package & class。
CLI(手动):
mkdir MyApp && cd MyApp mkdir -p src/com/example/app # 创建 Main.java,之后手动编译运行
编译 / 运行
编译:
javac -d out src/com/example/app/Main.java
运行:
java -cp out com.example.app.Main
依赖管理
手动把第三方 jar 放到
lib/,并在-cp中引用;或者使用简单的脚本来管理 classpath。不推荐用于复杂依赖(依赖冲突、传递依赖),适合小型项目。
打包与部署
打成可执行 jar(带
MANIFEST.MF指定 Main-Class):jar cfm myapp.jar manifest.txt -C out .
部署就是分发 jar。
优缺点
优点:简单、直接、轻量、学术/练手友好。
缺点:缺乏依赖管理、构建自动化差、难以扩展为大型项目。
2. Java Web 项目(Servlet/JSP,传统 Java Web)
用途
用于构建基于 Servlet/JSP 的网站或 Web 应用,运行在 Servlet 容器(如 Tomcat、Jetty)中。
典型目录结构(标准 WAR 结构)
MyWebApp/ ├─ src/ │ └─ main/ │ └─ java/ │ └─ com/example/web/ │ └─ HelloServlet.java ├─ WebContent/ (或 webapp/) │ ├─ WEB-INF/ │ │ ├─ web.xml │ │ └─ lib/ (jar 放这里,部署时随 war 一起) │ ├─ index.jsp │ └─ static/ └─ build/ / dist/ (构建产物)
如何创建
IDE:New → Web Application project → 选择 Web SDK / Server(Tomcat),IDE 会生成
WEB-INF/web.xml。CLI:手动组织目录并编写
web.xml,或者通过 Ant/手动打包成 war。
核心配置
WEB-INF/web.xml(简化示例)
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.example.web.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
编译 / 打包 / 部署
将 class 编译到
WEB-INF/classes,第三方 jar 放WEB-INF/lib,然后打成myapp.war:jar -cvf myapp.war -C WebContent/ .
部署:把
myapp.war放到 Tomcat 的webapps/下,Tomcat 自动展开并启动。
依赖管理
手动把 jar 放
WEB-INF/lib,或配合 Ant/Maven(见下一节)管理。
优缺点
优点:清晰的 Web 容器模型,部署(war)标准化。
缺点:样板代码多、配置繁琐(尤其在 web.xml 时代)、与现代微服务理念不太契合。
3. Maven 项目(标准 Maven Java 项目)
用途
使用 Maven 作为构建与依赖管理工具的 Java 应用(非 Web),适合中大型项目、需要标准化构建流程和依赖管理的场景。
典型目录结构(Maven 约定)
my-app/ ├─ src/ │ ├─ main/ │ │ ├─ java/ │ │ └─ resources/ │ └─ test/ │ ├─ java/ │ └─ resources/ ├─ pom.xml └─ target/
如何创建
IDE:New → Project → Maven → 选择 archetype(或使用 IDE 向导)。
CLI(Maven must be installed):
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
关键文件:pom.xml(最小示例)
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
构建 / 运行 / 测试
编译:
mvn compile测试:
mvn test打包 jar:
mvn package(生成target/my-app-1.0-SNAPSHOT.jar)运行:
java -jar target/my-app-1.0-SNAPSHOT.jar(若为可执行 jar,需配置插件创建可执行 jar)
依赖管理
通过
pom.xml声明依赖,Maven 负责下载、传递依赖、版本冲突解决(依赖树管理)。
优缺点
优点:成熟的依赖管理、插件生态、标准化构建。
缺点:初学门槛(pom 配置),某些复杂依赖冲突排查需要经验。
4. Maven Web 项目(Maven + Web,生成 WAR)
用途
把传统 Java Web 与 Maven 结合:用 Maven 管理依赖与构建,输出 war 包部署到容器。适合企业级传统 Web 应用。
典型目录结构(Maven Web)
my-webapp/ ├─ src/ │ ├─ main/ │ │ ├─ java/ │ │ ├─ resources/ │ │ └─ webapp/ │ │ ├─ WEB-INF/ │ │ │ └─ web.xml │ │ └─ index.jsp │ └─ test/ ├─ pom.xml └─ target/
pom.xml要点(war packaging)
<project>
...
<packaging>war</packaging>
<dependencies>
<!-- Servlet API 通常 scope 为 provided(由容器提供) -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
如何创建
IDE:New → Maven → 选择 webapp archetype(如
maven-archetype-webapp)。CLI:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
构建 / 打包 / 部署
打包:
mvn package→target/my-webapp.war部署:将 war 部署到 Tomcat/Jetty 等容器。
优缺点
优点:结合 Maven 的依赖管理和插件,方便 CI/CD;可自动化测试与打包。
缺点:与微服务趋势相比略重;需要注意
provided依赖(容器提供的库)。
5. Spring Boot 项目(现代微服务/快速开发)
用途
基于 Spring 生态但极简配置的框架,适合开发独立运行的微服务或 web 应用(内嵌容器),快速启动生产级应用。
典型目录结构(Maven)
spring-boot-app/ ├─ src/ │ ├─ main/ │ │ ├─ java/ │ │ │ └─ com/example/app/ │ │ │ └─ Application.java │ │ └─ resources/ │ │ └─ application.properties │ └─ test/ ├─ pom.xml └─ target/
如何创建
Spring Initializr(推荐):https://start.spring.io (在 IDE 中通常有向导)
IDE:New → Spring Initializr → 选择依赖(Web, JPA, Security 等)
CLI(Maven):使用
curl+ Initializr 或手动 archetype(一般用 Initializr)
核心示例代码
Application.java
package com.example.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
pom.xml(关键片段)
<project>
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- spring-boot-maven-plugin 用于打包可执行 jar -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
运行 / 打包
运行(开发):
mvn spring-boot:run或 直接运行Application.main()(IDE)。打包:
mvn package→ 生成target/app-0.0.1-SNAPSHOT.jar(可执行,内嵌 Tomcat/Jetty)。运行可执行 jar:
java -jar target/app-0.0.1-SNAPSHOT.jar
依赖管理
通过
pom.xml声明spring-boot-starter-*依赖,Starter 帮你拉取常用依赖并设置兼容版本。Spring Boot 的
dependencyManagement(由 parent 管理)简化版本控制。
部署方式
直接部署可执行 jar 到服务器(推荐)。
如需外部容器,配置为
war并调整SpringBootServletInitializer,然后部署到 Tomcat(较少用)。
优缺点
优点:开箱即用、约定优于配置、starter 生态、适合微服务 + 容器化(Docker)、活跃社区。
缺点:启动包体积较大(内嵌容器),对“传统”Servlet-only 项目迁移可能需要调整。
对比速览(优选场景)
普通 Java 项目:小工具、学习、算法题、桌面/控制台应用。
Java Web 项目(非 Maven):传统 Web / 学习 Servlet/JSP(不推荐用于生产)。
Maven 项目(非 Web):标准化构建、复杂依赖、CI 集成的 Java 应用。
Maven Web 项目:传统企业 Web 应用(war)+Maven 管理依赖与构建。
Spring Boot 项目:现代微服务 / REST API / 快速开发,容器化友好。
常用命令小结
javac/java:原生编译与运行mvn compile、mvn test、mvn package:Maven 基本生命周期命令mvn spring-boot:run:运行 Spring Boot 项目打包成 war:在
pom.xml中<packaging>war</packaging>,然后mvn package
小建议(工程实践)
新项目优先考虑 Maven/Gradle + Spring Boot(可维护、生态强)。
需要运行在传统容器、或与遗留系统集成时用 Maven Web (war)。
练习核心 Java 或学习语法时,使用 普通 Java 项目。
团队项目建议用版本控制、CI(GitHub Actions/Jenkins)、并使用构建工具(Maven/Gradle)统一构建。
为可移植性考虑,使用
application.properties/application.yml管理配置,避免写死环境变量。
总结
到此这篇关于Java项目五种创建方式的文章就介绍到这了,更多相关Java项目创建方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
