与 .jar 文件和 spring boot 混淆

Posted

技术标签:

【中文标题】与 .jar 文件和 spring boot 混淆【英文标题】:Confiusion with .jar file and spring boot 【发布时间】:2017-03-06 14:17:46 【问题描述】:

我有点困惑,为什么我的应用程序正在运行。我有我的 Spring Boot 项目,它编译成 .jar

<groupId>Twitter</groupId>
    <artifactId>twitter-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

并且应用程序运行良好(它是简单的网络应用程序)。我在这里缺少的是,为什么它在 &lt;packaging&gt; 设置为 .jar 而不是 .war 时工作(对于网络应用程序)。我的意思是“正常”使用它,我将 .war 文件放入 webapp 文件夹(谈论 tomcat),然后访问它 xxxx/myapp。但是在这里我将它打包成 .jar 并且它作为 webapp 工作。有人可以解释一下吗?在此先感谢各位!

【问题讨论】:

【参考方案1】:

Tomcat 在 JAR 中运行。 Spring Boot 可以作为可执行 JAR 运行,无需 Java EE 应用服务器或 servlet/JSP 引擎。

【讨论】:

好的,所以我构建了一个包含嵌入式 tomcat 的 .jar,其中包含“某种” .war 内部? 不,你创建了一个可执行的 Spring Boot JAR。不要再考虑 WAR——这是 Java EE 的要求。【参考方案2】:

通常 Spring Boot 会在您的 JAR 中嵌入一个 servlet 引擎,并在这个嵌入的 servlet 引擎(Jetty、Tomcat)中启动您的应用程序。看看Spring Boot Project。

这个特性被称为

创建独立的 Spring 应用程序 直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文件)

【讨论】:

以上是关于与 .jar 文件和 spring boot 混淆的主要内容,如果未能解决你的问题,请参考以下文章

使用Allatori对Spring Boot项目进行代码混淆

Spring Boot 和 Proguard

Gradle + Spring Boot 无法处理超过 65535 个文件的 jar

Spring boot使用ProGuard实现代码混淆

Spring Boot 应用程序 - 启动时间与“mvn spring-boot:run”和“java -jar”的差异

Spring Boot 2 启动时加载properties文件