1

maven-shade-pluginを使用して、次のようにプロジェクト ファイル構造を作成しようとしています。

ここに画像の説明を入力

問題は、次の 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>:

ここに画像の説明を入力

どのように見えるか:

ここに画像の説明を入力

4

2 に答える 2

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>
于 2014-06-27T07:49:40.123 に答える
0

maven-assemblyプラグインを使用すると、柔軟性が大幅に向上します。アセンブリ プラグインを使用することで簡単に実現できます。


見る

于 2014-06-26T22:42:24.937 に答える