构建配置:Java后端(Spring + Maven)与JS项目(Angular)

时间:2013-07-12 10:23:13

标签: angularjs spring maven build-process

我们希望改进Java + JavaScript项目的构建配置/集成。

  • 后端:Java应用程序,Spring框架,REST API + maven作为构建工具
  • 前端:HTML + CSS + JavaScript,(基于ng-boilerplate项目模板 - 它很好地分离了所有模块,服务,指令,共享资产)和它使用很少的JavaScript工具,如npm,Bower,Karma + Grunt

工作区配置非常简单 - 每个项目都在单独的目录中:

    /workspace
     /JavaBackend
     /JsFrontend 

问题是开发人员正在处理“Access-Control-Allow-Origin"浏览器中的消息,因为它们从前端运行AJAX查询(来自file://..../JSApp/build/index.hml),Java App服务器位于localhost:8080上。我们可以关闭浏览器安全性或修改标题以允许跨源请求,但我们认为如何实现这一目标并不好。

我们不希望在/ src / main / webapps /中的Java项目中拥有JS资源,因为生产环境应用程序将部署在不同的计算机上,并且每个应用程序都拥有它自己的构建服务器。

您是否有类似项目配置的经验?你会向我们推荐什么?

同时我们将尝试使用Tomcat 7来检查它是否可以例如在java app的上下文中提供外部静态资源(js stuff)

1 个答案:

答案 0 :(得分:0)

出于开发目的,我希望Tomcat通过<Context>标记在server.xml中包含前端文件夹。该文件夹可以是任意的,甚至可以在另一个存储库中(例如/GitRepos/ApplicationGui/app)。

...
      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">    
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
        <Context docBase="/workspace/JsFrontend" path="/"/>
        <Context docBase="FlexibleOrders" path="/FlexibleOrders" reloadable="true" source="org.eclipse.jst.j2ee.server:FlexibleOrders"/>
      </Host>
    </Engine>
  </Service>
</Server>

在制作中,我建议在前端制作Maven制品。然后可以通过后端中的依赖包含它,如下所示:

<dependency>
    <groupId>org.enterprise</groupId>
    <artifactId>application-gui</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency> 

有关完整的制作配置,请参阅此博客:

http://wiki.switajski.de/2016/01/24/how-to-create-maven-artifact-with-static-web-resources.html