springboot(12)项目打包输出

1、输出成jar

1.1、执行命令

在项目所在目录的命令行执行命令mvn clean package或者通过Eclipse的maven插件执行命令clean package(如图所示)。
这里写图片描述
这里写图片描述

1.2、输出的结构

刷新项目结构,target目录下会有xxx.jar和xxx.jar.original两个文件。
这里写图片描述
两者都是当前项目输出的jar文件,区别是xxx.jar打包了项目所依赖的所有jar文件,xxx.jar.original仅仅只有当前项目的编译文件。

1.3、运行

执行命令启动项目:

java -jar TestSpringBoot-0.0.1-SNAPSHOT.jar

2、输出成war

2.1、修改pom.xml

添加如下内容,申明当前项目为war项目。

<packaging>war</packaging>

并且将tomcat的scope属性修改为provided:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

其他步骤同1

3、注意事项

maven命令只执行clean,会导致项目再次运行出现异常:
错误: 找不到或无法加载主类 com.example.demo.SrpingBootThymeleafApplication
解决办法:
1. 不要单独执行”clean”命令,可以执行”clean package”命令;
2. 通过project-clean步骤,项目恢复。

<think>好的,我现在要解决用户的问题:如何禁用Spring Boot打包时的输出目录。首先,我需要理解用户的需求。用户可能是在使用Spring Boot进行项目构建时,希望不生成通常的打包输出目录,比如target目录。可能的原因包括节省磁盘空间,或者避免某些构建过程中的冲突。 接下来,我需要回忆Spring Boot的构建流程。Spring Boot通常使用Maven或Gradle作为构建工具。所以,禁用输出目录可能需要针对这两个构建工具进行配置。首先考虑Maven的情况,因为它是常用的构建工具。 对于Maven项目,默认的构建输出目录是target。用户想要禁用这个目录,可能意味着在构建后不生成该目录,或者在构建过程中跳过某些生成步骤。不过,Maven的package阶段默认会执行打包操作,生成jar或war文件到target目录。如果用户希望禁用这个目录,可能需要配置Maven的插件,或者调整构建生命周期中的某些阶段。 但仔细想想,Maven的构建输出目录是核心功能的一部分,直接禁用可能不太现实。或许用户的意思是希望不生成最终的jar/war包,而不是完全禁用输出目录。这时候可以考虑配置Maven的package阶段跳过执行。例如,使用-DskipTests和-Dmaven.test.skip=true可以跳过测试,但不会跳过打包。不过,是否有参数可以跳过打包呢? 或者,用户可能想禁用默认的打包行为,比如不使用spring-boot-maven-plugin生成的fat jar。这时候可以排除该插件,但这样可能导致打包后的jar不符合Spring Boot的可执行格式。但这可能不是用户想要的。 另一个思路是,用户可能希望构建时不执行package阶段,这样就不会生成target目录。例如,运行mvn compile而不是mvn package,这样只会编译代码到target/classes,而不会打包成jar。但用户可能希望执行完整的构建过程,只是不生成最终的jar文件。 或者,用户想清理构建目录,可以使用mvn clean,这会删除target目录。但这和禁用输出目录无关。 再考虑Gradle的情况。Gradle的默认输出目录是build。用户可能希望禁用这个目录。同样,Gradle的构建任务包括assemble,会生成jar包。如果用户希望不生成build目录,可能需要配置Gradle的构建脚本,调整输出目录的位置,或者跳过某些任务。 但无论是Maven还是Gradle,输出目录是构建过程的一部分,完全禁用可能导致构建失败。因此,可能的解决方案是配置构建工具将输出目录重定向到其他地方,或者跳过生成jar包的步骤。 现在,我需要验证这些思路。查阅Maven文档,发现可以通过配置maven-jar-plugin来跳过jar的生成。例如: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <skipIfMissing>true</skipIfMissing> </configuration> </plugin> 但这可能仅在缺少主类时跳过。另一种方法是禁用默认的打包插件,例如设置<packaging>pom</packaging>,但这通常用于父项目,子项目可能需要其他类型。 或者,用户可以使用Maven的profile来跳过package阶段。例如,通过命令行参数:mvn install -DskipPackaging。但需要预先配置profile。 对于Gradle,可以在build.gradle中禁用jar任务: jar.enabled = false 这样,执行构建时不会生成jar文件,但其他任务可能仍然会生成build目录中的其他文件,比如类文件。 总结,用户可能希望禁用打包生成的jar或war文件,而不是完全禁用输出目录。因此,正确的做法是针对构建工具进行配置,跳过打包步骤或禁用相关任务。 现在,我需要将这些步骤整理成清晰的回答,分Maven和Gradle两种情况,说明如何禁用生成最终的jar包,从而避免输出目录中的打包文件。同时提醒用户输出目录可能仍然存在其他构建产物,如类文件,但主要的打包文件会被跳过。</think>在Spring Boot项目中禁用打包输出目录(如Maven的`target`目录或Gradle的`build`目录),通常是指跳过生成最终的`JAR/WAR`包。以下是分步解决方案: --- ### 方案一:Maven项目 1. **禁用`spring-boot-maven-plugin`打包** 在`pom.xml`中配置插件跳过`repackage`目标: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <skip>true</skip> <!-- 禁用Spring Boot打包 --> </configuration> </plugin> </plugins> </build> ``` 2. **跳过所有打包任务** 直接跳过Maven的`package`生命周期阶段: ```bash mvn clean install -DskipTests -Dmaven.jar.skip=true ``` - `-Dmaven.jar.skip=true`:跳过JAR包生成 - 此时`target`目录仍会存在编译后的`.class`文件,但不会生成最终的`JAR/WAR` --- ### 方案二:Gradle项目 1. **禁用`bootJar`或`jar`任务** 在`build.gradle`中添加以下配置: ```groovy bootJar { enabled = false // 禁用Spring Boot的Fat Jar生成 } jar { enabled = false // 禁用普通JAR生成 } ``` 2. **跳过打包任务** 执行命令时排除打包任务: ```bash gradle clean build -x bootJar -x jar ``` - `-x`参数排除指定任务 - 此时`build`目录会保留编译文件,但不会生成JAR --- ### 注意事项 1. **输出目录仍会存在** 禁用打包后,`target`或`build`目录仍可能包含编译后的类文件(如`target/classes`),这是构建工具的默认行为。 2. **彻底清理输出目录** 如果需要完全删除输出目录,可手动清理或使用: ```bash mvn clean # Maven gradle clean # Gradle ``` --- ### 总结 - **禁用打包文件**:通过配置插件跳过`JAR/WAR`生成,而不是完全禁用输出目录。 - **执行命令**:结合构建命令参数实现快速跳过。 - **适用场景**:多模块项目中仅需编译子模块、调试时减少构建时间等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值