【发布时间】:2018-12-13 12:43:22
【问题描述】:
我正在使用带有 Angular 7 前端的 Spring Boot 应用程序,并通过以下方式构建(和执行)整个项目:
mvn clean package
cd target
java jar -jarFile
效果很好。它启动了一个 tomcat,我可以通过localhost:8080 访问该站点。现在我对代码进行了一些更改,并且 tomcat 没有运行我的代码的更新版本(而是运行旧代码)。我通过在我的第一页添加日志来确认这一点:
旧代码
ngOnInit() {
this.logger.info('init dashboard component');
this.updateAllProjects();
this.updateMyProjects();
}
这是新代码:
ngOnInit() {
this.logger.info('init dashboard component');
this.updateAllProjects();
this.updateMyProjects();
this.logger.info('everything up to date');
}
它被放置在ngOnInit()-函数中。现在我回去运行mvn clean package 并尝试再次启动 jar。然而,我得到以下输出:
通过运行ng serve 我得到了这个结果(正如预期的那样):
我尝试运行 ng build 并在 tomcat 上手动部署 - 结果相同。
所以我查看了我生成的类 - target\classes\static 中的 main.js 包含以下代码:
DashboardComponent.prototype.ngOnInit = function () {
this.logger.info('init dashboard component');
this.updateAllProjects();
this.updateMyProjects();
this.logger.info('everything up to date');
};
应该是这样的。
所以我进一步研究了我生成的 JAR 文件。来自BOOT-INF\classes\static\ 的main.js 包含以下代码:
DashboardComponent.prototype.ngOnInit = function () {
this.logger.info('init dashboard component');
this.updateAllProjects();
this.updateMyProjects();
this.logger.info('everything up to date');
}
但是当我运行 `java -jar' 时仍然没有执行。我还尝试交换一些 UI 元素,但没有应用更改。实际上我从来没有遇到过这些麻烦,有人可以联系/帮助吗?我什至尝试重新启动电脑...:D
手动部署战争文件也有相同的输出。
编辑:
我在我的pom.xml 中使用spring-boot-starter-web-dependency,这是该tomcat 的来源。
编辑
这个问题只影响前端代码。我已经尝试清除 target 和 main/resources/static 文件夹,并在这些目录中生成新代码。
【问题讨论】:
-
看来tomcat正在缓存资源。尝试清理 webapp 目录,刷新服务器库并重新部署。
-
我部署到全新的tomcat上,仍然是旧代码,所以这似乎是一个与maven相关的问题
-
您是否尝试在 Chrome 中使用 Shift+F5 重新加载页面?由于浏览器缓存,我在使用 GWT 应用程序时遇到了类似的问题。
-
@DrHopfen 我尝试了一个完整的系统重启,我认为这就足够了。我现在确实建立了一个新项目,并且成功了。下次我会记住你的建议并尝试一下!
标签: java spring maven tomcat jar