今天我像这样配置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>
当然,在插件的类路径上提供该文件。
由于
答案 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>