Maven:在war build中的资源文件夹中包含文件夹

时间:2014-03-05 12:40:50

标签: maven web-applications jar build-process

我在src / main / rescource中有一个名为extra-jars的文件夹,但是如何在构建中包含这些文件夹呢?我希望它们与其余的jar放在lib文件夹中。我尝试将它们包括在内,但那不起作用。

2 个答案:

答案 0 :(得分:7)

对于未由Maven存储库分发的jar,最简单的方法是将额外的jar放在项目的src/main/webapp/WEB-INF/lib目录中。按照惯例,Maven会在最终的战争神器中包含src/main/webapp下的所有内容。

另一种方法是使用Maven War Plugin。它可以通过插件配置add additional files到最终战争工件。

在POM的构建部分添加如下内容:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <webResources>
          <resource>
            <directory>src/main/resource/extra-jars</directory>
            <includes>
              <include>*.jar</include>
            </includes>
            <targetPath>WEB-INF/lib</targetPath>
          </resource>
        </webResources>
      </configuration>
    </plugin>
  </plugins>
</build>

<configuration>部分是添加其他文件的关键。

  • <directory>元素定义资源的源位置。该路径相对于pom.xml
  • <includes>元素定义了要包含的上述目录中的文件。
  • <targetPath>元素定义WAR中复制文件的目标目录。

答案 1 :(得分:2)

这些jar应该作为Maven依赖项添加,而不是将它们复制到lib文件夹中。这就是Maven的设计目的。