当前位置: 首页 > news >正文

Java 项目 — 五种创建方式

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 packagetarget/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 compilemvn testmvn package:Maven 基本生命周期命令

  • mvn spring-boot:run:运行 Spring Boot 项目

  • 打包成 war:在 pom.xml<packaging>war</packaging>,然后 mvn package


小建议(工程实践)

  1. 新项目优先考虑 Maven/Gradle + Spring Boot(可维护、生态强)。

  2. 需要运行在传统容器、或与遗留系统集成时用 Maven Web (war)

  3. 练习核心 Java 或学习语法时,使用 普通 Java 项目

  4. 团队项目建议用版本控制、CI(GitHub Actions/Jenkins)、并使用构建工具(Maven/Gradle)统一构建。

  5. 为可移植性考虑,使用 application.properties / application.yml 管理配置,避免写死环境变量。

http://www.dtcms.com/a/529917.html

相关文章:

  • 可以做推文的网站为何公司做的网站很丑
  • 宜春网站开发公司电话可以用来展示的网站
  • custed谁做的网站商品详情页设计模板
  • 【开题答辩全过程】以 布哩民宿预定系统的设计与实现为例,包含答辩的问题和答案
  • 不到网站是为什么深圳开发微信公众号
  • 网站基础建设一般多少钱自己做网站的服务器
  • 平台网站模板素材图片网页设计与网站开发项目
  • 专业建网站平台电商网站需要哪些备案
  • 网站设计维护内容asp.net 网站管理工具 安全
  • AUTOSAR AP通信管理规范:设计背景与技术实现解析
  • 网上订餐网站模板wordpress如何加html
  • 【开发者导航】高性能跨平台数据整理与分析工具:qsv让CSV处理更高效
  • 佛山市网站建设 乾图信息科技一 网站建设方案
  • 毕业设计做视频网站江苏建设部网站
  • 成都企业网站备案流程dede 网站目录
  • Spring Boot3零基础教程,Mybatis 自动配置解析,笔记53
  • 俄语网站里做外贸shop中国对外建设有限公司网站
  • 南昌网站设计公司哪家好石家庄新闻频道
  • 二叉树问题讨论(部分内容待补充)
  • uniapp本地打包详细教程
  • 做国外网站手机端网站的区别
  • 新网站开发费用参加sem培训
  • alexa怎么查询网站排名程序员都需要学什么
  • 长江工程建设局网站珠海做网站推广公司
  • 专业微网站建设百度mip wordpress
  • 做彩票网站程序违法吗在四川省住房和城乡建设厅网站上查
  • 中国建设银行下载官方网站开题报告网站开发方法
  • 成都营销型网站制作工厂型企业做网站
  • 免费不收费用网站wordpress开发团队
  • 滚动数组(空间优化)