Maven系列(八)assembly打包-程序和依赖jar包分开化+多环境

Maven多环境assembly打包:程序与依赖分离
本文是Maven系列的第八篇,主要介绍如何使用assembly插件进行程序和依赖jar包分开的多环境打包配置。通过修改pom.xml和package.xml文件,实现不同环境的打包设置。内容包括配置说明、目录结构展示以及打包测试。

前言

上一篇介绍的是“assembly打包-程序和依赖jar包分开化”的配置方法, 这一篇就来介绍下如何多环境的配置,这里请看清楚,是“程序和依赖jar包分开化+多环境”跟之前的不太一样哦。

需要修改的配置

项目的目录结构
工程结构.png

pom

添加profile配置,我这里同样配置了三种环境

<profiles>
        <profile>
            <id>
<think>我们之前的讨论已经明确了:虽然理论上可以用纯Java代码实现打包,但实际开发中强烈不推荐。用户当前的问题是希望在IntelliJ IDEA中不依赖Maven插件打包Maven项目为JAR。我们需要提供在IDEA中不通过Maven插件(即不使用maven-assembly-plugin或maven-shade-plugin等)的替代方案。 根据用户引用[2]的提示,我们知道Maven项目打包JAR的关键在于是否依赖。用户希望的是不依赖Maven插件,但我们可以利用IDEA内置的构建功能(本质是调用JDK工具)来实现。 因此,我们可以提供两种在IntelliJ IDEA中不依赖Maven插件的打包方法: 方法一:使用IntelliJ IDEA自带的Artifact构建方式(纯IDEA功能,不涉及Maven插件) 方法二:使用JDK命令行工具(在IDEA的Terminal中执行) 注意:这两种方法都需要先通过Maven下载好依赖(因为依赖管理还是需要Maven),只是打包阶段不使用Maven插件。 步骤需要详细且可操作。 另外,根据用户引用[1],我们可以强调IDEA与Maven结合的高效性,但这里用户要求不使用Maven插件,所以我们只提供替代方案。 同时,我们需要指出这些方法的局限性(比如依赖需要手动处理等)。 最后生成相关问题。 </think>### 在IntelliJ IDEA中不依赖Maven插件打包Maven项目为JAR的操作方法 虽然Maven项目通常依赖插件打包,但可通过以下两种方法在IntelliJ IDEA中实现**不依赖Maven插件**的纯Java打包--- #### 方法一:使用IDEA内置构建工具(推荐) ```mermaid graph TD A[准备项目] --> B[配置Artifact] B --> C[编译源码] C --> D[构建JAR] D --> E[依赖] ``` 1. **准备编译输出** - 确保项目已编译:点击菜单 `Build > Build Project`(或按`Ctrl+F9`) - 编译后的.class文件默认在`target/classes`目录 2. **创建Artifact配置** - 打开 `File > Project Structure > Artifacts` - 点击 `+` 选择 `JAR > From modules with dependencies` - 配置项: ```java Main Class: 指定入口类(如com.example.Main) JAR Files: 选择target/classes目录 Directory for META-INF/MANIFEST.MF: 保持默认 ``` 3. **排除Maven依赖(关键步骤)** - 在`Output Layout`标签页: - 删除所有`Library Files`条目(避免自动Maven依赖- 手动添加必需的第三方JAR(若有) 4. **构建JAR** - 菜单选择 `Build > Build Artifacts` - 选择刚创建的Artifact > `Build` - 生成的JAR在`out/artifacts/`目录 > 此方法本质调用JDK的`jar`命令,不触发Maven生命周期[^1] --- #### 方法二:手动执行JDK命令(适合脚本化) ```bash # 编译源码(Windows/Linux通用) javac -d target/classes src/main/java/**/*.java # 创建不含依赖的纯净JAR jar cfv app.jar -C target/classes . # 添加主类清单(可选) echo Main-Class: com.example.Main > manifest.txt jar ufvm app.jar manifest.txt ``` **在IDEA中操作:** 1. 打开底部 `Terminal` 面板 2. 执行上述命令序列 3. 生成的`app.jar`位于项目根目录 --- ### 📌 注意事项 1. **依赖处理** - 第三方库需手动添加到classpath: ```bash java -cp app.jar:lib/dependency1.jar:lib/dependency2.jar com.example.Main ``` - 或通过解压合并JAR(不推荐): ```bash unzip dependency.jar -d ./temp jar uf app.jar -C temp . ``` 2. **资源文件处理** - 需手动复制资源文件到JAR: ```bash cp src/main/resources/* target/classes/ ``` 3. **版本兼容性** - 确保IDEA使用的JDK与项目兼容(`File > Project Structure > Project SDK`) > 此方法适用于简单项目,但复杂项目仍推荐使用Maven插件处理依赖传递资源过滤[^2] --- ### ✅ 验证打包结果 在Terminal执行: ```bash # 查看JAR内容 jar tf app.jar # 运行验证 java -jar app.jar # 若指定了Main-Class java -cp app.jar com.example.Main # 未指定入口时 ``` --- ### 💡 专家建议 1. **简单原型**:使用纯Java打包快速验证 2. **实际项目**:配合`maven-jar-plugin`配置最小化依赖 ```xml <!-- pom.xml 精简配置 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` 3. **Web项目**:必须使用`maven-war-plugin`,无法纯Java打包 > 通过IDEA的Artifact配置结合JDK原生工具链,可实现对Maven插件的零依赖打包,但需自行处理依赖资源合并[^1][^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值