日期:2014-05-17  浏览次数:20590 次

多个工程中,关于公共资源【js,css】等版本控制的问题
    目前有个公共资源的resource project,其他工程需要的资源文件都是从该工程引用的,这就涉及到多个工程引用不同版本的资源文件的问题。我们知道对于java工程,引用不同的jar文件就可以,而resource工程就是个难题。
比如A和B工程都需要引用resource工程,有时候更新了resource,这时候只想升级A工程,B工程可能因为另外的原因不想升级,那么B工程需要引用旧的版本的resource资源。这几个工程的引用关系如何管理?
我们目前使用maven进行项目管理,要解决上面的问题我觉得需要解决以下几个问题:
1、resource工程能自动发布,maven已经实现 ok
2、在A工程能够引用特定的resource版本
<dependency>  
   <groupId>com.resource</groupId>  
   <artifactId>resource-webapp</artifactId>  
   <version>20120424.1</version>  
   <type>war</type>  
   <scope>runtime</scope>  
</dependency> 
 

这个引用方式的实际意义不是我想要的,maven好像是吧resource工程的内容拷贝到了A工程,常见第四点的说明
3、使用eclipse javaee版开发时接使用上面的resource版本,为了开发上面的方便。
  比如部署server的时候不能直接引入resource工程(这样使用的是最新版本),而应该是带有某个版本号的war文件
4、打包A工程时直接打包resource的特定版本的文件
我看了下使用maven打包A工程后的war文件,其实是把resource工程的文件复制到了A工程的war文件,但是这个不是我想要的,我们还是要分开打包,两个工程还是独立部署的。资源文件你可能想部署在另外的服务器上

任何意见都非常感谢


补充:
现在想到针对可能引起版本冲突,或者因为版本升级带来的其他项目的问题,目前主要是因为js升级引起的,所以想对js进行特殊处理。
具体处理:
把指定版本的js拷贝到具体的项目中,具体的项目使用这些拷贝到js。打包的时候也是打包到具体的项目中。

1、使用这个依赖关系
<dependency>  
   <groupId>com.resource</groupId>  
   <artifactId>resource-webapp</artifactId>  
   <version>20120424.1</version>  
   <type>war</type>  
   <scope>runtime</scope>  
</dependency> 
 
2、然后在maven-war-plugin中设置只拷贝js文件。具体如下:
              <!-- 配置打包js工程的文件,目前只需要js目录下的文件而已 -->
             
<overlay>
		                <groupId>com.resource</groupId>
		                <artifactId>resource-webapp</artifactId>
		                <includes>
		                  <include>js/**</include>
		                </includes>
		              </overlay>
		            </overlays>	

但是目前还有个问题。这样配置只是在打包的时候才拷贝过去,而对于开发阶段也是一个不方便的地方。我希望在开发阶段也拷贝过去(想想jar就是这样的),就是说当我配置了dependency后,maven就自动把相关的文件拷贝到引用的工程里边。

不知道有没有这样的可能,或者得自己写个插件?