Jar的目录结构

当Jar文件须引用到其他Jar时,Jar的目录结构如下:

 

File: MAINFEST.MF

Manifest-Version: 1.0

Main-Class: com.test.Test

Class-Path: lib/log4j-1.2.16.jar

  

D:\

├─com.test.jar

│  ├─com

│  │    └─test

│  │          └─Test.class

│  │

│  └─META-INF

│          └─MAINFEST.MF

├─lib  ※此处目录结构参照MAINFEST.MF中的lib/log4j-1.2.16.jar

      └─log4j-1.2.16.jar

 

D:\> java -jar com.test.jar

### Maven 打包 JAR 包及目录结构生成方式 在 Maven 项目中,打包为 JAR 文件的过程是由 Maven 的生命周期和插件共同完成的。Maven 默认会根据项目的目录结构生成符合 Java 标准的 JAR 文件[^1]。 #### 1. Maven 打包 JAR 的基本流程 Maven 使用 `maven-jar-plugin` 插件来执行 JAR 文件的打包操作。当运行 `mvn package` 命令时,Maven 会自动将编译后的类文件打包成 JAR 文件,并将其放置在目标目录(通常是 `target`)中[^2]。 #### 2. 默认目录结构 Maven 项目的默认目录结构如下所示: ```plaintext src ├── main │ ├── java # 存放源代码 │ ├── resources # 存放资源文件 ├── test │ ├── java # 存放测试代码 │ ├── resources # 存放测试资源文件 ``` 这些目录中的内容会被 Maven 自动处理并包含到最终的 JAR 文件中。例如,`src/main/java` 中的 `.java` 文件会被编译为 `.class` 文件,而 `src/main/resources` 中的文件会被直接复制到 JAR 文件的根目录下[^3]。 #### 3. JAR 文件的内容结构 生成的 JAR 文件通常具有以下内容结构: - **/META-INF/**:包含元数据信息,如 `MANIFEST.MF` 文件。 - **编译后的类文件**:位于与源代码相同的包路径下。 - **资源文件**:从 `src/main/resources` 复制而来。 以下是 JAR 文件的典型内容示例: ```plaintext my-app.jar ├── META-INF/ │ └── MANIFEST.MF ├── com/example/app/ │ └── Main.class # 编译后的类文件 └── config.json # 资源文件 ``` #### 4. 配置自定义行为 如果需要自定义 JAR 文件的行为,可以在 `pom.xml` 中配置 `maven-jar-plugin` 插件。例如,设置主类以支持直接运行 JAR 文件: ```xml <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.app.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` 通过上述配置,JAR 文件的 `MANIFEST.MF` 文件中会包含 `Main-Class` 属性,从而支持通过 `java -jar my-app.jar` 直接运行[^4]。 #### 5. 示例命令 使用以下命令可以生成 JAR 文件: ```bash mvn clean package ``` 此命令会清理旧的构建结果并重新生成新的 JAR 文件。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值