【软件工具】jar包和war包区别,标准 Java 应用程序和 Java Web 应用程序区别


标准 Java 应用程序和 Java Web 应用程序在用途、结构和运行环境上有一些显著的区别。以下是它们的详细比较:

标准 Java 应用程序

定义
  • 标准 Java 应用程序:通常指在独立的 Java 虚拟机(JVM)上运行的应用程序,不依赖于任何特定的服务器环境。它们通常是命令行应用程序或桌面 GUI 应用程序。
特点
  • 运行环境:独立运行在任意支持 JVM 的平台上,通常通过 java -jar 命令启动。
  • 构建输出:通常打包为 JAR(Java ARchive)文件,包含类文件、资源文件和 META-INF 目录。
  • 结构简单:主要包含 src/main/javasrc/main/resources 目录,用于存放源代码和资源文件。
  • 用途:用于桌面应用程序、命令行工具、独立的业务逻辑模块等。
示例项目结构
myapp/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           ├── MainClass.java
│   │   │           └── AnotherClass.java
│   │   └── resources/
│   │       └── config.properties
├── pom.xml
示例 pom.xml
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Java Web 应用程序

定义
  • Java Web 应用程序:运行在 Web 服务器(如 Apache Tomcat、Jetty)或应用服务器(如 JBoss、WebLogic)上的应用程序,通常提供动态网页和 Web 服务。
特点
  • 运行环境:部署在 Web 服务器或应用服务器上,通过 HTTP/HTTPS 协议提供服务。
  • 构建输出:通常打包为 WAR(Web ARchive)文件,包含 Web 组件(如 JSP、Servlet)、静态资源(HTML、CSS、JavaScript)、类文件、库文件(JAR)和配置文件。
  • 结构复杂:包括 src/main/webapp 目录,用于存放 Web 相关资源和 WEB-INF 目录。
  • 用途:用于动态网站、Web 服务、Web 应用程序等。
示例项目结构
mywebapp/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           ├── MyServlet.java
│   │   │           └── AnotherClass.java
│   │   ├── resources/
│   │   ├── webapp/
│   │   │   ├── WEB-INF/
│   │   │   │   └── web.xml
│   │   │   ├── index.jsp
│   │   │   └── static/
│   │   │       ├── css/
│   │   │       │   └── style.css
│   │   │       ├── js/
│   │   │       │   └── script.js
│   │   │       └── images/
│   │   │           └── logo.png
├── pom.xml
示例 pom.xml
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>mywebapp</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

共同点

  • Java 技术栈:两者都基于 Java 编程语言和 JVM,使用相同的编程语言、库和工具。
  • Maven 构建工具:两者都可以使用 Maven 进行构建和管理依赖,使用类似的 pom.xml 配置文件。
  • 依赖管理:两者都依赖于 pom.xml 文件进行依赖管理,可以使用相同的库和插件。

archiveArtifacts 在 Jenkins 中的作用

archiveArtifacts 是 Jenkins Pipeline 中用于存档构建生成的工件(如 JAR 文件、WAR 文件、日志文件等)的步骤。它使这些工件可以在 Jenkins 的 UI 中查看和下载,确保构建成果的保存和可追溯性。

示例

假设你在 Jenkins 中构建一个 Maven 项目,生成了一个 JAR 文件或 WAR 文件,并希望将其存档。可以在 Jenkinsfile 中使用 archiveArtifacts 进行存档。

JAR 包存档示例

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                // 使用 Maven 构建 JAR 包
                sh 'mvn clean package'
            }
        }

        stage('Archive') {
            steps {
                // 将构建生成的 JAR 包存档
                archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
            }
        }
    }
}

WAR 包存档示例

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                // 使用 Maven 构建 WAR 包
                sh 'mvn clean package'
            }
        }

        stage('Archive') {
            steps {
                // 将构建生成的 WAR 包存档
                archiveArtifacts artifacts: 'target/*.war', fingerprint: true
            }
        }
    }
}

总结

  • 标准 Java 应用程序:独立运行,适用于桌面和命令行应用,通常打包为 JAR 文件。
  • Java Web 应用程序:运行在 Web 服务器或应用服务器上,提供 Web 服务,通常打包为 WAR 文件。
  • 共同点:两者都使用 Java 技术栈和 Maven 构建工具,具有相同的依赖管理机制。
  • archiveArtifacts:用于在 Jenkins 中存档构建生成的工件,确保构建成果的保存和可追溯性。

通过了解这些区别和联系,可以更好地在不同的应用场景中选择合适的项目结构和构建方式。

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值