Maven:如何从 Web 项目源代码中排除所有第三方 jar



目前我们有一个基于 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>

最新更新