小梦看电影 發表於 2026-1-8 10:08:11

Java项目五种创建方式示例总结

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

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: Java项目五种创建方式示例总结