root |----backend |----|----src |----|----|----main |----|----|----|----java (individual java files not shown) |----|----|----|----resources |----|----|----|----|----Meta-INF |----|----|----|----|----|----applicationContext.xml |----|----|----|----webapp |----|----|----|----|----WEB-INF |----|----|----|----|----|----web_servicesConfig.xml |----|----|----|----|----|----web.xml |----|----pom.xml |----deploy |----|----src |----|----|----main |----|----|----|----resources (properties files for tomcat) |----|----pom.xml |----frontend |----|----app |----|----|----angular files |----|----bower_components |----|----|----bower files |----|----bower.json |----|----Gruntfile.js |----|----pom.xml
好的希望在文件结构上足够清楚.我打算使用maven-grunt-plugin,所以我可以在前端运行我的grunt命令.前端基本上与角度产生的设置相同或者至少是目标.部署只是设置tomcat,后端保存Spring 4 restful services / api.
好的,这就是我很困惑并寻求帮助.我不知道如何让前端与后端正常工作.基本上我想知道是否有办法告诉maven以开发模式启动Tomcat和Grunt服务器,以便我可以使用它们的两个功能来快速开发我的项目,然后将min文件拉入生产构建的战争中.我想我无法弄清楚如何让一切都很好地融合在一起.我查了一下这个问题,但是我仍然感到困惑:
How to deploy AngularJS app and Spring Restful API service on the same domain/server?
我希望任何链接到教程,以解决如何使用Maven与tomcat,spring,angularjs和grunt …还凉亭所以我可以使用它为我的前端包管理.我已经阅读了几个例子,并且已经看到很多关于如何在Java EE和jsp中使用spring的讨论.或者使用Gradle来做我想要的一些事情……但是我没有尝试过.
解决方法
>如何使用grunt / bower tomcat进行持续开发
>如何部署生产
1 – 持续发展
我选择的解决方案 – 因为你已经使用api来沟通客户端< - > server-是完全分开两个项目.
那是什么意思呢?
对我来说是拥有两个不同的存储库.一个用于客户端,一个用于服务器
这样你获得的好处很少:
>拆分项目的工作(前端/服务器端)
>易于维护
>如果您想支持“仅API”,例如,移动应用程序等.
但是 – 他们在开发过程中如何沟通?
这是一个很好的问题:
一种解决方案是在localhost上并行运行两个服务器,即mvn clean tomcat:run -P yourprofile; grunt服务器
但是 – 如果我尝试从不同端口从客户端访问服务器端,我将获得跨域?
你是对的.在这里你得到了grunt及其插件的帮助.抢一份grunt-connect-proxy的副本
这个插件有什么好处,它充当grunt服务器和tomcat服务器之间的中间件,所以你问grunt服务器的API,但实际上grunt要求tomcat服务器回答(当然在幕后)
2 – 部署用于生产
我想这是个人偏好问题.我发现war文件非常大,一次又一次上传(即使能够在你所有的tomcat应用程序之间共享lib).我想出的解决方案是通过git进行部署.
好的,但我有一个大的战争档案.我怎样才能做到这一点?
对我来说,我使用我在bash中编写的部署脚本.这就是它的作用:
>标记当前来源
>运行mvn clean package war:爆炸-P your-prod-profile(这也将运行测试和集成测试)
>使用上面的命令,您可以在一个地方获得所有已编译项目的文件,而不是一个大的war文件.
>将所有这些文件(和内部路径)复制到外部文件夹中(我使用另一个存储库通过git进行维护部署.所以基本上我有3个存储库.一个用于服务器源,一个用于客户端源,一个用于服务器二进制文件.)
>在执行4之前,请确保从中删除所有文件和文件夹(除了.git之外)
> 4之后做“git add -A”
>“git commit -a -m’新生产版本X”
>您可以在之前和之后标记一些标记,以便在新生产中存在大错误的情况下轻松恢复最后一个代码
>在服务器上运行远程命令到.)停止服务器,b.)从二进制存储库中提取最后的更改,c.)再次运行服务器.
>对我来说,我所做的是tomcat应用程序与外部文件夹(二进制存储库)之间的符号链接
希望这会给你一些指示,
最好成绩,橡木