MAVEN公共WEB资源依赖

      问题产生场景:多个不同的业务系统使用公共的JS文件和核心的业务JS文件,每创建一个web项目就需要将这些文件都拷贝到每个项目中去,如果修改了任何一个JS文件就需要更新使用这个JS文件的系统,效率非常低下,所以考虑用maven管理jar包一样管理公共Web资源。

       实现目标:每个业务系统能正常访问统一的Web资源,业务系统在相同文件目录下存在相同文件,则业务系统文件覆盖掉公共库中的文件;在开发过程中修改公共库的Web资源能够实时发布到业务系统项目中去。

配置方式如下:

  • 公共库packaging类型由原来的jar改为war,如下:
<groupId>com.projects</groupId>
<artifactId>projects-common</artifactId>
<version>${projects.version}</version>
<packaging>war</packaging>
  •  使用maven-war-plugin进行打包,通过配置项打包公共库,分别打出war包和jar包,不影响现有项目对公共库jar包的依赖。
<build>
	  <plugins>
	   <plugin>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-war-plugin</artifactId>
		    <version>2.4</version>
		    <configuration>
		    	<!-- 把class打包jar作为附件 -->
		    	<attachClasses>true</attachClasses>
		    	<!-- 把class打包jar -->
		      	<archiveClasses>true</archiveClasses>
		      	<failOnMissingWebXml>false</failOnMissingWebXml>
		    </configuration>
	   </plugin>
	  </plugins>
 	</build>
  • 在项目中添加对公共库的war包依赖,由于在项目的父pom文件中已经引入了maven-war-plugin插件,所以不再单独引入。
<dependency>
			<groupId>com.projects</groupId>
			<artifactId>projects-common</artifactId>
			<version>${projects.version}</version>
		</dependency>
		<dependency>
			<groupId>com.projects</groupId>
			<artifactId>projects-common</artifactId>
			<version>${projects.version}</version>
			<type>war</type>
		</dependency>

 总结:这种方式有一定的局限性,如果只引用了jar包,则无法解析jar包的pom依赖。所以还是最终决定将jar和war资源分为两个不同的公共包,在需要的项目中分别引用。

      问题产生场景:多个不同的业务系统使用公共的JS文件和核心的业务JS文件,每创建一个web项目就需要将这些文件都拷贝到每个项目中去,如果修改了任何一个JS文件就需要更新使用这个JS文件的系统,效率非常低下,所以考虑用maven管理jar包一样管理公共Web资源。        实现目标:每个业务系统能正常访问统一的Web资源,业务系统在相同文件目录下存在相同文件,则业务系统文件覆盖掉公共库中的文件;在开发过程中修改公共库的Web资源能够实时发布到业务系统项目中去。 配置方式如下:
  • 公共库packaging类型由原来的jar改为war,如下:

猜你喜欢

转载自lpyyn.iteye.com/blog/2176363