Beangle Sas Server支持war包声明依赖项,容器加载的方式,从而降低war包体积的做法。
每个应用依赖的包和其他应用之间多少有些重复,例如使用了Struts2,Log4j等第三方开源的包。这些包通常都可以在maven仓库上可以下到。 因此可以这些包从war中排除调,在war运行的时候,tomcat服务器会下载到本地缓存中,可以在各个应用之间共用。
在war的WEB-INF/classes/META-INF/目录下建立一个container.dependencies文件,内部可以使用
#groupId:artifactId:version的格式
org.hibernate:hibernate-core:4.3.1.Final
org.hibernate:hibernate-ehcache:4.3.1.Final
这包中的WEB/lib中上述jar文件删除,再将war包放到webapps中即可。
在youcontext.xml或者server.xml中的Context定义中,添加
1
<Loader className="org.apache.catalina.loader.RepositoryLoader"/>
其中cacheLayout表示本地缓存的风格,支持maven2和ivy2。可以补充cacheBase属性,设置本地缓存的位置(例如/opt/maven/repository)
默认使用maven2,目录默认为~/.m2/repository.
当风格为ivy2时,默认为~/.ivy2/cache
使用maven的项目可以省去上面的步骤:
在项目的pom文件中增加:
1
2
3
4
5
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<scope>provided</scope>
</dependency>
在pom的build部分增加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<build>
<plugins>
<plugin>
<groupId>org.beangle.maven</groupId>
<artifactId>beangle-maven-plugin</artifactId>
<version>0.3.23</version>
<executions>
<execution>
<id>generate</id>
<phase>prepare-package</phase>
<goals>
<goal>sas</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<packagingExcludes>
%regex[WEB-INF/lib/.*[^T].jar]
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
直接运行mvn clean install即可将自动生成container.dependencies,并打到包中。