Java、gulp和maven文件夹结构

Java、gulp和maven文件夹结构,java,maven,gradle,project,gulp,Java,Maven,Gradle,Project,Gulp,我有一个Java web项目,它使用:Java文件进入Java(实际上是:/src/main/Java),资源进入resources,web内容进入webapp 然后,我们希望通过添加bower、sass、gulp等来改进我们的web层。我们的gulp构建编译SCS、最小化Javascript、优化图像等您所期望的一切。但这引入了1)另一个构建工具gulp和2)gulp生成的文件 问题是如何组织这样的项目?一种方法可以是: (A) gulp内置到webapp文件夹中 在此解决方案中,所有java

我有一个Java web项目,它使用:Java文件进入
Java
(实际上是:
/src/main/Java
),资源进入
resources
,web内容进入
webapp

然后,我们希望通过添加bower、sass、gulp等来改进我们的web层。我们的gulp构建编译SCS、最小化Javascript、优化图像等您所期望的一切。但这引入了1)另一个构建工具gulp和2)gulp生成的文件

问题是如何组织这样的项目?一种方法可以是:

(A) gulp内置到webapp文件夹中 在此解决方案中,所有javascript、图像和scss文件都存储在
/src/main/assets
中,并构建到
/src/main/webapp
中。源文件和gulp生成的文件都提交到git。gradle构建独立于gulp,对于没有安装gulp的用户来说也没问题,比如那些只需要在后端工作的用户。此外,CI服务器也不依赖于gulp

(B) 在构建过程中使用gradle的一口 在这个解决方案中,从gradle调用gulp。因此,格雷德尔创造了一切。当你想尝试某样东西时,你必须每次都使用gradle。此外,每个开发人员都需要安装gulp,这对于使用windows的开发人员来说可能是一个问题(正如我所知道的)。此外,CI服务器应该知道如何运行gulp


我的团队在这两个选项之间左右为难。有人对这两种解决方案都有工作经验吗?

目前的最佳做法是将前端构建作为一个单独的项目,并将其放在自己的Maven或Gradle模块中。让Java构建系统调用JavaScript工具(例如,使用
maven exec插件
),并将输出保存到
target
build
中的相应目录中。将结果捆绑在一个jar中,并在类路径之外提供服务

如果您使用的是Bower,那么只需要在CI服务器上安装基本节点,Java构建就可以从那里调用必要的构建过程,根据需要获取JS包。不要忘记(1)使用
--保存
,(2)从源代码管理中排除JS模块目录


另外,我建议看一看,它可以管理您的JavaScript构建,使您在开发过程中不必配置监视程序等。

我目前正在使用Java+Grunt+Maven。我发现有两种方法可以将前端与后端打包,同样的方法也适用于Gulp

最终,这取决于对您的项目/团队来说什么是最好的。根据我的经验,我通常在与其他人合作时使用选项B,因为这种脱钩很容易解决其他问题。当我在做自己的项目时,我总是选择选项A,因为启动一个Web服务器和运行一个更接近DEV/PROD的本地环境更容易

A) 将前端放入webapp文件夹(例如)

好处-您可以在一个地方启动后端并进行开发,使用SpringSecurity非常简单,即使没有OAUTH。当本地环境中的两个Web服务器通常被捆绑到其他环境中的一个端口时,使用它们时,问题会减少

B) 将前端保存在不同的文件夹中,甚至保存在克隆到后端repo根文件夹中的不同repo中。(例如)查看“yo”文件夹

好处-奇妙的解耦,使前端开发人员可以生活在喜悦中,甚至不必在本地安装java或担心重新编译后端。如果你想让Travis(或你最喜欢的CI应用程序)在后端和前端进行单元测试,那么这个方法非常有效


编辑我发现了这个很棒的插件,你可以用它与maven/gradle一起构建前端。似乎是一条路要走,将与这个grunt和gulp的家伙一起重构我的初学者项目

我推荐的最佳实践是使用com.github.eirslett.frontend-maven-plugin(或maven-grunt插件)从mvn调用grunt/gulp构建(进程内资源目标)。当CI构建时,它是完全集成的,甚至npm等都可以安装在mvn的目标中,所以您不必为npm配置CI服务器

当开发人员构建时,大多数情况下仍然只使用一个maven命令。对于JS/CSS/HTML开发人员来说,在mvn干净安装之后,他们可以在后台运行grunt/gulp“watch”,以使他们的JS更改立即反映在浏览器中,而不会产生任何maven开销(仅是邪恶的快速gulp/gunt任务)

  • 在默认的Tomcat webapp目录上部署UI组件
  • 在“wtpwebapps”(通过eclipse上载war的默认目录)目录上部署类文件 设置日食
  • 转到服务器选项卡,打开tomcat的属性
  • 确保位置应为[工作区元数据]
  • 然后双击tomcat打开tomcat概览。
  • 将服务器位置设置为“使用tomcat位置”
  • 咕噜声/咕噜声设置
  • 使用复制任务将生成UI文件复制到
    /webapps/

  • 开发人员如何每天使用此功能?例如,您如何准备分解的文件夹并将所有内容放入其中,这样他们就不需要在每次javascript更改时重新启动服务器?您可以将服务器设置为在javascript目录之外提供服务。这在SpringMVC中非常容易,我知道在Eclipse中运行时,它都是自动设置的。如果您希望它在不需要IDE来管理类路径的情况下运行,请让使您处于开发模式(无缓存等)的配置文件也设置服务器的查找路径,以包括磁盘存储库的
    文件:
    URL。旧的post,但仍然有效。要更新分解的WAR目录,您有几个很好的选择:gulp.watch在更改时复制它们,或者如果您使用的是IDE,它们有一个on change copy命令。IDE失去焦点时,IntelliJ将复制资源。或者您可以使用文件监视程序。最后,你不可能