Springboot项目打war包运行及错误解决

一,打war包

1. 修改pom.xml

为了不影响原pom.xml, 我复制了一个文件叫pom_war.xml , 需要打war包就采用pom_war.xml进行打war包, 你也可以直接修改pom.xml

① 打包方式改为war

没有就增加此配置

<packaging>war</packaging>

② 排除内嵌tomcat依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 添加Tomcat依赖,但将其作用域设置为provided 
### 如何在Spring Boot项目中将Java项目WAR文件并进行代码混淆 #### 创建ProGuard配置文件 为了实现代码混淆,在项目的根目录下创建名为`proguard.cfg`的配置文件,其内容应括以下设置以确保功能正常运行[^1]。这些设置涵盖了关闭必要的优化选项、保留必要的类和注解信息以及处理动态加载的类。 ```plaintext -target 1.8 -dontshrink -dontoptimize -dontusemixedcaseclassnames -useuniqueclassmembernames -adaptclassstrings -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keepnames interface ** -keepclassmembers enum * { *; } -keepclassmembers class * { @org.springframework.context.annotation.Bean *; @org.springframework.beans.factory.annotation.Autowired *; @org.springframework.beans.factory.annotation.Value *; @org.springframework.stereotype.Service *; @org.springframework.stereotype.Component *; } -ignorewarnings -dontnote -printconfiguration -keeppublic class com.icoderoad.MyApplication { public static void main(java.lang.String[]); } ``` 此配置文件的作用在于保护Spring框架的关键组件错误地修改或移除,从而保持应用程序的功能完整性。 #### 修改Maven构建脚本 为了让Spring Boot应用能够被打WAR文件而是默认的JAR文件,需调整`pom.xml`中的相关内容。具体来说,要更改父依赖项版本号,并引入Tomcat嵌入式容器作为提供者来支持Web环境下的部署需求。 ```xml <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> </parent> <dependencies> <!-- 添加tomcat依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 通过以上改动,可以使得Spring Boot项目兼容传统的Servlet容器(如Apache Tomcat),进而允许将其导出为标准形式的WAR档案用于生产环境中发布。 #### 使用ProGuard Maven Plugin执行混淆操作 最后一步是在POM文档里定义好插件部分,指定如何调用ProGuard工具完成实际的混淆过程。这里需要注意的是,由于某些情况下可能产生的`.class`文件会自动更新到最终产物之中,则可按照另一份资料所描述的方法手动替换相应资源[^2]。 ```xml <build> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals><goal>proguard</goal></goals> </execution> </executions> <configuration> <injar>${project.build.finalName}.war</injar> <outjar>${project.build.finalName}-pg.war</outjar> <obfuscate>true</obfuscate> <options> <option>-include proguard.cfg</option> </options> <libs> <lib>${java.home}/lib/rt.jar</lib> </libs> </configuration> </plugin> </plugins> </build> ``` 这样就完成了整个流程的设计说明,从基础配置直到高级定制都进行了详细的阐述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值