Maven树荫复制WEB-INF

时间:2014-06-26 22:38:51

标签: java maven maven-shade-plugin

使用 maven-shade-plugin 我正在尝试按如下方式创建项目文件结构:

enter image description here

问题是以下pom配置没有创建WEB-INF目录。

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <createDependencyReducedPom>true</createDependencyReducedPom>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.my.package.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

基本上我需要将我的web.xml文件,类和lib文件复制到项目根目录中名为WEB-INF的目录中。

更新:抱歉,我将错误的插件从我的pom复制到原始问题中!

更新:如果我从pom声明中添加包装:<packaging>war</packaging>根据OQ完成WEB-INF文件结构。但是,使用此声明,com目录现在不包含我的包,因此无法找到主类。

<packaging>war</packaging>

的外观

enter image description here

应该如何看待:

enter image description here

2 个答案:

答案 0 :(得分:0)

maven-assembly插件允许更大的灵活性,使用程序集插件

可以轻松实现

查看

答案 1 :(得分:0)

有很多可能的答案可以用maven达到预期的效果。但是,基于我给出的更新,我发现添加 maven-antrun-plugin 以下内容解决了我的问题:

<plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <id>move-main-class</id>
                    <phase>compile</phase>
                    <configuration>
                        <tasks>
                            <copy todir="${project.build.directory}/${project.artifactId}">
                                <fileset dir="${project.build.directory}/classes/">
                                </fileset>
                            </copy>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>