配置maven-shade-plugin以包含src / main / webapp

时间:2012-05-04 14:28:21

标签: maven jetty war embedded-jetty maven-shade-plugin

我正在使用一个简单的项目,标准位置的webapp目录(src / main / webapp)。出于某种原因,看起来maven-shade-plugin在最终生成的jar中不包含它 - 默认情况下它只包含工件src / main / resources。 我试图使用以下配置,没有运气:

<configuration>
 <artifactSet>
  <includes>
   <include>*</include>
   <include>*:*</include>
  </includes>
 </artifactSet>
</configuration>

关于如何在不必将src / main / webapp移动到src / main / resources / webapp的情况下做任何建议?

谢谢。

尤金。

6 个答案:

答案 0 :(得分:6)

您是否尝试使用资源路径更新构建部分?

<build>
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
           </resource>
        </resources>
</build>

编辑

正如已经说过的,阴影目的不是战争包裹。

答案 1 :(得分:1)

您需要将其放在src / main / resources / webapp中,或明确指定适当的位置以使其正确捕获。很烦人,但它确实有效。

对于那些为什么这样做有意义的人来说,这是一个带有嵌入式Web服务器的jar的典型设置,如Jetty。

答案 2 :(得分:1)

我使用资源插件将webapp移动到classes文件夹。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>compile</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/classes/webapp</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/webapp/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

这样我可以将文件夹与我的webapp放在任何地方,定义目标目录,它包含在我的阴影罐中。

答案 3 :(得分:0)

听起来你想把资源打包成一个包。存在maven-source-plugin将创建包含源文件的jar。此外,这通常在发布周期中完成。如前所述,maven-share-plugin的目的是将jar文件打包在一起(其内容;关键字:ueberjar)。

答案 4 :(得分:0)

我会使用war插件http://maven.apache.org/plugins/maven-war-plugin/faq.html#attached来创建一个webapp项目的jar。您已设置<packaging>war</packaging>

答案 5 :(得分:0)

将您的webapp资源添加到JAR中有什么意义?这就像WAR一样。

将您的打包类型更改为war,它会起作用。