Java,gulp和maven文件夹结构

igr*_*igr 14 java project gradle maven gulp

我有一个使用Maven标准目录布局的Java Web项目:java文件进入java(实际:) /src/main/java,资源进入resources,web内容进入webapp.

然后我们想通过添加bower,sass,gulp等来改进我们的web层.我们的gulp构建编译scss,最小化javascripts,优化图像等,一切你期望的.但是这引入了1)另一个构建工具,gulp和2)gulp生成的文件.

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

(A)gulp构建到webapp文件夹中

在此解决方案中,所有javascript,images,scss文件都存储在其中/src/main/assets并构建到/src/main/webapp.源和gulp生成的文件都被提交给git.gradle构建独立于gulp,对于没有安装gulp的用户来说是可以的 - 比如那些只需要在后端工作的用户.此外,CI服务器不依赖于gulp的东西.

(B)在构建期间使用gradle从gradle

在这个解决方案中,gulp是从gradle调用的.Gradle因此构建了一切.每当你想尝试某些东西时,你必须使用gradle.此外,每个开发人员都需要安装gulp,对于使用Windows的开发人员来说可能是个问题(正如我所知).CI服务器也应该知道如何运行gulp.

我的团队在这两个选项之间徘徊.有没有人有这些解决方案的任何工作经验?

Eri*_*ich 10

我目前正在使用Java + Grunt + Maven.我发现有两种方法可以用你的后端包装你的前端,这同样适用于Gulp.

最后,它取决于您的项目/团队的最佳选择.根据我的经验,我通常在与他人合作时使用选项B,因为脱钩很容易值得其他问题.当我在做我自己的项目时,我总是选择A,因为它更容易启动一个网络服务器并运行更接近DEV/PROD的本地环境.

A)将您的前端放入webapp文件夹(例如https://github.com/kdubb1337/maven-grunt-webapp)

优点 - 您可以在一个地方启动后端并进行开发,即使没有OAUTH,也可以轻松使用Spring安全性.当两个Web服务器通常捆绑到其他环境中的一个端口时,在本地环境中使用两个Web服务器的问题较少.

B)将您的前端保存在不同的文件夹中,或者甚至放在您克隆到后端repo的根文件夹中的不同仓库中.(例如https://github.com/kdubb1337/maven-grunt)查看'yo'文件夹

优点 - 梦幻般的解耦使得前端开发人员可以在不必在本地安装Java或担心重新编译后端的情况下生活愉快.如果您希望Travis(或您最喜欢的CI应用程序)在后端和前端进行单元测试,那么效果很好.

编辑我发现这个很棒的插件你可以用maven/gradle构建前端https://github.com/eirslett/frontend-maven-plugin.看起来像是要走的路,将重建我的初学者项目与这个家伙为grunt和gulp


chr*_*ke- 9

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

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

此外,我建议查看RaveJS,它管理您的JavaScript构建,并使您不必在开发期间配置观察者等.