目前我们有一个基于 JSF 的 Web 项目,我们正在 Jboss EAP 6.1 服务器中部署它。它是一个多模块项目,在web-porject/lib文件夹中添加了大量第三方jar。
当我们运行mvn install
它会创建战争文件,并在 Jboss 中部署此战争文件,但问题是它的大小太大,大约 300MB。因此,有时我们很难在服务器中部署战争,如果代码中的任何一行更改,则需要时间在服务器中上传项目。
我们希望我们应该分离出jar文件(第三方)和源代码。所以战争规模应该更小,所有第三方jar都应该与源代码分开。
该项目是基于maven的项目,因此所有依赖项都添加到pom.xml
文件中,因此对于开发人员来说,我们不应该删除pom文件条目。
有人可以建议处理这种情况的最佳方法吗?
您应该分两步完成此操作。首先从打包中排除依赖项,并仅在编译阶段使用它们:
<dependencies>
<!-- declare the dependency to be set as optional -->
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<optional>true</optional> <!-- value will be true or false only -->
</dependency>
</dependencies>
在第二步中,将运行应用程序所需的所有 jar 放在 jboss JBOSS_HOME/lib 文件夹中。
您可以使用复制项目依赖项 maven 插件来做到这一点:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>