如何使用类路径资源配置Maven插件?

时间:2013-05-29 17:41:08

标签: maven

今天我像这样配置Maven war插件:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
   <webXml>${basedir}/../common/WEB-INF/web.xml</webXml>
</configuration>

这允许我在几个项目之间共享该web.xml。 这种方法的问题在于我的Maven项目不是自包含的。它取决于文件系统上的相对路径。

以某种方式可以做这样的事吗? :

   <webXml>classpath:com/mycompany/common/web.xml</webXml>

当然,在插件的类路径上提供该文件。

由于

1 个答案:

答案 0 :(得分:1)

第一步是创建一个包含jar包装类型为web.xml的专用Maven模块。我们称之为com.mycompany:common。

  

以某种方式可以做这样的事吗? :

<webXml>classpath:com/mycompany/common/web.xml</webXml>

你试过,但你确定它不起作用?如果确实如此,我想你必须使用领先的'/'(/ com /...).

  

当然,在该类路径上提供该文件   插件。

那很简单......只需在com.mycompany中添加一个依赖项:common,使其在类路径中可用。当然,它必须在您的Maven存储库中可用。

如果classpath:不起作用,我自己真的不确定了,您可以使用maven-dependency-plugin从JAR解包web.xml,以便将其提供给maven-war-plugin

<强>的pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-web-xml</id>
      <phase>..any phase before packaging..</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>com.mycompany</groupId>
            <artifactId>common</artifactId>
            <version>1.0</version>
            <outputDirectory>...dir you'll use for the war plugin later...</outputDirectory>
            <includes>/com/mycompany/common/web.xml</includes>
          </artifactItem>
        </artifactItems>
      </configuration>
    </execution>
  </executions>
</plugin>