我创建了几个使用相同静态文件(css,js,images)的Web应用程序。 当我使用svn进行版本控制时,我使用外部存储库(svn:externals)将文件添加到当前项目中。 例如:
- Project_1
---- Webapp
-------- Static (external to static's repo)
- Project_2
---- Webapp
-------- Static (external to static's repo)
我可以通过添加/ static / ...
等链接轻松地在网页中使用它但现在我们的公司已经转向了perforce。 我如何支持当前的结构?
我们也使用maven,我认为将这些文件打包为jar并用作依赖项,但是我的编辑器(想法)没有看到这种依赖是js脚本和样式。 我需要在创建微小更改时重新打包和部署jar文件。
如何正确使用maven?
答案 0 :(得分:3)
Perforce支持定义从软件仓库到硬盘驱动器的多个映射,作为客户端规范的一部分。例如,您可以设置以下内容:
Client Name: Sample_Maven
Client Root: c:\inetpub\wwwroot
//depot/Project_1/Webapp/... //Sample_Maven/Project_1/...
//depot/Project_2/Webapp/... //Sample_Maven/Project_2/...
//depot/Shared/static/... //Sample_Maven/static/...
... any other folder mappings you need to bring in and sync ...
Perforce本身不会处理共享静态文件夹情况的多个映射,您必须在文件系统中使用联结/符号链接来获取所需的行为。但请注意,确保只有一个共享静态文件夹通过Perforce实际管理。如果资源在不知道变化的情况下从中改变,它可能会略微变得脾气暴躁。
实际上,你可能会更好(如果可以的话) - 每个项目有一个工作区/客户端规范 - 一个用于proj1,一个用于proj2,每个都有自己的共享静态文件夹映射。如果你能够恰当地构建东西,只需使用maven来构建每个“项目”,事情就会更加顺利。
答案 1 :(得分:2)
对于基于Maven的解决方案,您可以使用WAR Overlays,在多个Web应用程序之间共享公共资源正是覆盖的目的。
答案 2 :(得分:0)
您似乎有两个选择,都称为叠加:
a)Maven overlays,@Pascal表示。然后,像@Goyuix这样的结构建议检查Perforce中的静态内容。
b)Perforce overlays,它允许您拥有两个不同的工作空间/客户端规范,每个项目一个,并在每次导入静态内容到文件系统中的预期位置。这是与之前使用的subversion结构最接近的匹配。