1

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

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

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

    /workspace
     /JavaBackend
     /JsFrontend 

问题是开发人员在从前端运行 AJAX 查询时(来自 file://..../JSApp/build/index .hml) 和 Java App 服务器位于 localhost:8080。我们可以关闭浏览器安全性或修改标头以允许跨源请求,但我们认为这不是实现这一点的好方法。

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

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

同时,我们将使用 Tomcat 7 进行试验,以检查它是否可以在 java 应用程序的上下文之外提供外部静态资源(js 内容)

4

1 回答 1

0

<Context>出于开发目的,我会让 Tomcat 通过标签将前端文件夹包含在 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

于 2016-01-24T23:17:08.920 回答