最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java項(xiàng)目五種創(chuàng)建方式示例總結(jié)

 更新時(shí)間:2026年01月08日 10:08:11   作者:學(xué)IT的周星星  
這篇文章主要介紹了Java項(xiàng)目五種創(chuàng)建方式的相關(guān)資料,包括普通Java項(xiàng)目、JavaWeb項(xiàng)目(Servlet/JSP)、Maven項(xiàng)目、MavenWeb項(xiàng)目和SpringBoot項(xiàng)目,每種項(xiàng)目類型都有其特定的用途、典型目錄結(jié)構(gòu)、如何創(chuàng)建項(xiàng)目、核心配置、依賴管理和優(yōu)缺點(diǎn),需要的朋友可以參考下

1. 普通 Java 項(xiàng)目(Plain / Standard Java Project)

用途

適合控制臺(tái)工具、學(xué)習(xí)練習(xí)、算法、單文件或少量類的程序,不依賴 Web 容器或復(fù)雜構(gòu)建工具。

典型目錄結(jié)構(gòu)

MyApp/
├─ src/
│  └─ com/example/app/
│     └─ Main.java
├─ lib/                (可選,第三方 jar)
├─ out/                (編譯輸出,可由 IDE 管理)
└─ README.md

如何創(chuàng)建

  • IDE(IntelliJ IDEA / Eclipse):New Project → Java → 指定 SDK → 新建 package & class。

  • CLI(手動(dòng))

    mkdir MyApp && cd MyApp
    mkdir -p src/com/example/app
    # 創(chuàng)建 Main.java,之后手動(dòng)編譯運(yùn)行
    

編譯 / 運(yùn)行

  • 編譯:

    javac -d out src/com/example/app/Main.java
    
  • 運(yùn)行:

    java -cp out com.example.app.Main
    

依賴管理

  • 手動(dòng)把第三方 jar 放到 lib/,并在 -cp 中引用;或者使用簡單的腳本來管理 classpath。

  • 不推薦用于復(fù)雜依賴(依賴沖突、傳遞依賴),適合小型項(xiàng)目。

打包與部署

  • 打成可執(zhí)行 jar(帶 MANIFEST.MF 指定 Main-Class):

    jar cfm myapp.jar manifest.txt -C out .
    
  • 部署就是分發(fā) jar。

優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):簡單、直接、輕量、學(xué)術(shù)/練手友好。

  • 缺點(diǎn):缺乏依賴管理、構(gòu)建自動(dòng)化差、難以擴(kuò)展為大型項(xiàng)目。

2. Java Web 項(xiàng)目(Servlet/JSP,傳統(tǒng) Java Web)

用途

用于構(gòu)建基于 Servlet/JSP 的網(wǎng)站或 Web 應(yīng)用,運(yùn)行在 Servlet 容器(如 Tomcat、Jetty)中。

典型目錄結(jié)構(gòu)(標(biāo)準(zhǔn) WAR 結(jié)構(gòu))

MyWebApp/
├─ src/
│  └─ main/
│     └─ java/
│        └─ com/example/web/
│           └─ HelloServlet.java
├─ WebContent/ (或 webapp/)
│  ├─ WEB-INF/
│  │  ├─ web.xml
│  │  └─ lib/         (jar 放這里,部署時(shí)隨 war 一起)
│  ├─ index.jsp
│  └─ static/
└─ build/ / dist/     (構(gòu)建產(chǎn)物)

如何創(chuàng)建

  • IDE:New → Web Application project → 選擇 Web SDK / Server(Tomcat),IDE 會(huì)生成 WEB-INF/web.xml。

  • CLI:手動(dòng)組織目錄并編寫 web.xml,或者通過 Ant/手動(dòng)打包成 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 自動(dòng)展開并啟動(dòng)。

依賴管理

  • 手動(dòng)把 jar 放 WEB-INF/lib,或配合 Ant/Maven(見下一節(jié))管理。

優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):清晰的 Web 容器模型,部署(war)標(biāo)準(zhǔn)化。

  • 缺點(diǎn):樣板代碼多、配置繁瑣(尤其在 web.xml 時(shí)代)、與現(xiàn)代微服務(wù)理念不太契合。

3. Maven 項(xiàng)目(標(biāo)準(zhǔn) Maven Java 項(xiàng)目)

用途

使用 Maven 作為構(gòu)建與依賴管理工具的 Java 應(yīng)用(非 Web),適合中大型項(xiàng)目、需要標(biāo)準(zhǔn)化構(gòu)建流程和依賴管理的場(chǎng)景。

典型目錄結(jié)構(gòu)(Maven 約定)

my-app/
├─ src/
│  ├─ main/
│  │  ├─ java/
│  │  └─ resources/
│  └─ test/
│     ├─ java/
│     └─ resources/
├─ pom.xml
└─ target/

如何創(chuàng)建

  • IDE:New → Project → Maven → 選擇 archetype(或使用 IDE 向?qū)В?/p>

  • CLI(Maven must be installed):

    mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

關(guān)鍵文件: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>

構(gòu)建 / 運(yùn)行 / 測(cè)試

  • 編譯:mvn compile

  • 測(cè)試:mvn test

  • 打包 jar:mvn package(生成 target/my-app-1.0-SNAPSHOT.jar

  • 運(yùn)行:java -jar target/my-app-1.0-SNAPSHOT.jar(若為可執(zhí)行 jar,需配置插件創(chuàng)建可執(zhí)行 jar)

依賴管理

  • 通過 pom.xml 聲明依賴,Maven 負(fù)責(zé)下載、傳遞依賴、版本沖突解決(依賴樹管理)。

優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):成熟的依賴管理、插件生態(tài)、標(biāo)準(zhǔn)化構(gòu)建。

  • 缺點(diǎn):初學(xué)門檻(pom 配置),某些復(fù)雜依賴沖突排查需要經(jīng)驗(yàn)。

4. Maven Web 項(xiàng)目(Maven + Web,生成 WAR)

用途

把傳統(tǒng) Java Web 與 Maven 結(jié)合:用 Maven 管理依賴與構(gòu)建,輸出 war 包部署到容器。適合企業(yè)級(jí)傳統(tǒng) Web 應(yīng)用。

典型目錄結(jié)構(gòu)(Maven Web)

my-webapp/
├─ src/
│  ├─ main/
│  │  ├─ java/
│  │  ├─ resources/
│  │  └─ webapp/
│  │     ├─ WEB-INF/
│  │     │  └─ web.xml
│  │     └─ index.jsp
│  └─ test/
├─ pom.xml
└─ target/

pom.xml要點(diǎn)(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>

如何創(chuàng)建

  • IDE:New → Maven → 選擇 webapp archetype(如 maven-archetype-webapp)。

  • CLI

    mvn archetype:generate -DgroupId=com.example -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    

構(gòu)建 / 打包 / 部署

  • 打包:mvn packagetarget/my-webapp.war

  • 部署:將 war 部署到 Tomcat/Jetty 等容器。

優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):結(jié)合 Maven 的依賴管理和插件,方便 CI/CD;可自動(dòng)化測(cè)試與打包。

  • 缺點(diǎn):與微服務(wù)趨勢(shì)相比略重;需要注意 provided 依賴(容器提供的庫)。

5. Spring Boot 項(xiàng)目(現(xiàn)代微服務(wù)/快速開發(fā))

用途

基于 Spring 生態(tài)但極簡配置的框架,適合開發(fā)獨(dú)立運(yùn)行的微服務(wù)或 web 應(yīng)用(內(nèi)嵌容器),快速啟動(dòng)生產(chǎn)級(jí)應(yīng)用。

典型目錄結(jié)構(gòu)(Maven)

spring-boot-app/
├─ src/
│  ├─ main/
│  │  ├─ java/
│  │  │  └─ com/example/app/
│  │  │     └─ Application.java
│  │  └─ resources/
│  │     └─ application.properties
│  └─ test/
├─ pom.xml
└─ target/

如何創(chuàng)建

  • Spring Initializr(推薦)https://start.spring.io (在 IDE 中通常有向?qū)В?/p>

  • IDE:New → Spring Initializr → 選擇依賴(Web, JPA, Security 等)

  • CLI(Maven):使用 curl + Initializr 或手動(dòng) 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(關(guān)鍵片段)

<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 用于打包可執(zhí)行 jar -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

運(yùn)行 / 打包

  • 運(yùn)行(開發(fā)):mvn spring-boot:run 或 直接運(yùn)行 Application.main()(IDE)。

  • 打包:mvn package → 生成 target/app-0.0.1-SNAPSHOT.jar(可執(zhí)行,內(nèi)嵌 Tomcat/Jetty)。

  • 運(yùn)行可執(zhí)行 jar:

    java -jar target/app-0.0.1-SNAPSHOT.jar
    

依賴管理

  • 通過 pom.xml 聲明 spring-boot-starter-* 依賴,Starter 幫你拉取常用依賴并設(shè)置兼容版本。

  • Spring Boot 的 dependencyManagement(由 parent 管理)簡化版本控制。

部署方式

  • 直接部署可執(zhí)行 jar 到服務(wù)器(推薦)。

  • 如需外部容器,配置為 war 并調(diào)整 SpringBootServletInitializer,然后部署到 Tomcat(較少用)。

優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):開箱即用、約定優(yōu)于配置、starter 生態(tài)、適合微服務(wù) + 容器化(Docker)、活躍社區(qū)。

  • 缺點(diǎn):啟動(dòng)包體積較大(內(nèi)嵌容器),對(duì)“傳統(tǒng)”Servlet-only 項(xiàng)目遷移可能需要調(diào)整。

對(duì)比速覽(優(yōu)選場(chǎng)景)

  • 普通 Java 項(xiàng)目:小工具、學(xué)習(xí)、算法題、桌面/控制臺(tái)應(yīng)用。

  • Java Web 項(xiàng)目(非 Maven):傳統(tǒng) Web / 學(xué)習(xí) Servlet/JSP(不推薦用于生產(chǎn))。

  • Maven 項(xiàng)目(非 Web):標(biāo)準(zhǔn)化構(gòu)建、復(fù)雜依賴、CI 集成的 Java 應(yīng)用。

  • Maven Web 項(xiàng)目:傳統(tǒng)企業(yè) Web 應(yīng)用(war)+Maven 管理依賴與構(gòu)建。

  • Spring Boot 項(xiàng)目:現(xiàn)代微服務(wù) / REST API / 快速開發(fā),容器化友好。

常用命令小結(jié)

  • javac / java:原生編譯與運(yùn)行

  • mvn compilemvn test、mvn package:Maven 基本生命周期命令

  • mvn spring-boot:run:運(yùn)行 Spring Boot 項(xiàng)目

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

小建議(工程實(shí)踐)

  1. 新項(xiàng)目優(yōu)先考慮 Maven/Gradle + Spring Boot(可維護(hù)、生態(tài)強(qiáng))。

  2. 需要運(yùn)行在傳統(tǒng)容器、或與遺留系統(tǒng)集成時(shí)用 Maven Web (war)。

  3. 練習(xí)核心 Java 或?qū)W習(xí)語法時(shí),使用 普通 Java 項(xiàng)目。

  4. 團(tuán)隊(duì)項(xiàng)目建議用版本控制、CI(GitHub Actions/Jenkins)、并使用構(gòu)建工具(Maven/Gradle)統(tǒng)一構(gòu)建。

  5. 為可移植性考慮,使用 application.properties / application.yml 管理配置,避免寫死環(huán)境變量。

總結(jié) 

到此這篇關(guān)于Java項(xiàng)目五種創(chuàng)建方式的文章就介紹到這了,更多相關(guān)Java項(xiàng)目創(chuàng)建方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 逆序?qū)栴}(Java實(shí)現(xiàn))歸并詳解

    逆序?qū)栴}(Java實(shí)現(xiàn))歸并詳解

    文章介紹了計(jì)算給定正整數(shù)序列中逆序?qū)?shù)量的方法,特別是使用歸并排序進(jìn)行拆分和合并時(shí)統(tǒng)計(jì)逆序?qū)?通過遞歸拆分序列,并在合并過程中統(tǒng)計(jì)逆序?qū)?shù)量,從而得到整個(gè)序列的逆序?qū)倲?shù),此方法能有效處理包含重復(fù)數(shù)字的序列
    2026-05-05
  • springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼

    springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼

    實(shí)施Token驗(yàn)證的方法挺多的,還有一些標(biāo)準(zhǔn)方法,比如JWT,本文主要介紹了springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Java SpringBoot啟動(dòng)指定profile的8種方式詳解

    Java SpringBoot啟動(dòng)指定profile的8種方式詳解

    這篇文章主要介紹了spring boot 如何指定profile啟動(dòng)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 開源的Java圖片處理庫實(shí)例詳解

    開源的Java圖片處理庫實(shí)例詳解

    Java?圖片處理庫提供了豐富的功能,用于處理和增強(qiáng)圖像,在Java生態(tài)系統(tǒng)中,有幾個(gè)流行的開源庫可以用于圖片處理,這些庫提供了豐富的功能,如圖像縮放、裁剪、顏色調(diào)整、格式轉(zhuǎn)換等,本文介紹開源的Java圖片處理庫介紹,感興趣的朋友一起看看吧
    2024-03-03
  • java多線程中的異常處理機(jī)制簡析

    java多線程中的異常處理機(jī)制簡析

    在java多線程程序中,所有線程都不允許拋出未捕獲的checked exception,也就是說各個(gè)線程需要自己把自己的checked exception處理掉,需要了解的朋友可以參考下
    2012-11-11
  • Java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則介紹

    Java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則介紹

    迪米特法則解決類與類之間耦合度問題,如果類A調(diào)用了B類的某一個(gè)方法,則這兩個(gè)類就形成了一種緊耦合的方式,當(dāng)B類這個(gè)方法發(fā)生變化時(shí),一定會(huì)影響A類的執(zhí)行結(jié)果。迪米特法則要求每一個(gè)類盡可能少的與其他類發(fā)生關(guān)系
    2023-02-02
  • Java8中的lambda表達(dá)式入門教程

    Java8中的lambda表達(dá)式入門教程

    lambda表達(dá)式,即帶有參數(shù)的表達(dá)式,為了更清晰地理解lambda表達(dá)式,下面通過示例代碼給大家介紹java8 lambda 表達(dá)式入門教程,感興趣的朋友一起看看吧
    2017-08-08
  • idea 使用Maven Helper idea的解決方法

    idea 使用Maven Helper idea的解決方法

    這篇文章主要介紹了idea 使用Maven Helper idea的解決方法,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Hibernate對(duì)數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼

    Hibernate對(duì)數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼

    本篇文章主要介紹了Hibernate對(duì)數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解設(shè)計(jì)模式中的proxy代理模式及在Java程序中的實(shí)現(xiàn)

    詳解設(shè)計(jì)模式中的proxy代理模式及在Java程序中的實(shí)現(xiàn)

    代理模式主要分為靜態(tài)代理和動(dòng)態(tài)代理,使客戶端方面的使用者通過設(shè)置的代理來操作對(duì)象,下面來詳解設(shè)計(jì)模式中的proxy代理模式及在Java程序中的實(shí)現(xiàn)
    2016-05-05

最新評(píng)論

永昌县| 平乐县| 襄垣县| 高雄市| 那坡县| 贵阳市| 顺昌县| 苏尼特左旗| 南昌县| 东乌珠穆沁旗| 和静县| 柘荣县| 杨浦区| 来宾市| 淮阳县| 保康县| 玉田县| 明水县| 唐山市| 衡阳县| 沙坪坝区| 昭苏县| 桓台县| 同德县| 贞丰县| 肃南| 吉林市| 泰宁县| 会宁县| 锦屏县| 土默特左旗| 莎车县| 依兰县| 水富县| 韶关市| 新昌县| 望奎县| 新龙县| 远安县| 宜兰市| 故城县|