2

我创建了几个使用相同静态文件(css、js、图像)的 Web 应用程序。当我使用 svn 进行版本控制时,我使用外部存储库 (svn: externals) 将文件添加到当前项目。例如:

- Project_1 
---- Webapp 
-------- Static (external to static's repo) 
- Project_2 
---- Webapp 
-------- Static (external to static's repo)

我可以通过添加 /static/ 之类的链接轻松地在他们的网页中使用它...

但是现在我们公司已经开始执行了。我如何支持当前的结构?

我们也用maven,我想把这些文件打包成jar,作为依赖使用,但是后来我的编辑器(idea)没有看到这个依赖是js-scripts和styles。我需要在创建微小更改时重新打包和部署 jar 文件。

如何正确使用maven?

4

3 回答 3

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 构建每个“项目”,那么事情将会更加顺利。

于 2010-04-23T14:51:56.663 回答
2

对于基于 Maven 的解决方案,您可以使用WAR Overlays,跨多个 Web 应用程序共享公共资源正是覆盖的用途。

于 2010-04-23T14:43:26.210 回答
0

似乎您有几个选择,都称为叠加层:

a)正如@Pascal所建议的那样, Maven 覆盖。然后你像@Goyuix这样的结构建议从 Perforce 签出静态内容。

b) Perforce 覆盖,这将允许您拥有两个不同的工作区/客户端规范,每个项目一个,并在每个项目中将静态内容导入文件系统中的预期位置。这是与您之前使用的颠覆结构最接近的匹配。

于 2010-04-23T16:34:21.237 回答