8

Eclipse の別の Maven プロジェクトに依存する Maven モジュールのすべての依存関係をバンドルする展開パッケージを作成しようとしています。

私はpom.xmlにこれを持っています

<modelVersion>4.0.0</modelVersion>
<groupId>com.my.proj</groupId>
<artifactId>AAA</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>btc</name>
<dependencies>
    <dependency>
        <groupId>com.another.proj</groupId>
        <artifactId>BBB</artifactId>
        <version>1.4-SNAPSHOT</version>
    </dependency>
</dependencies>

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.group.id.Launcher1</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

その「m2 Maven Build」をEclipseで使用し、「org.apache.maven.plugins:maven-shade-plugin:shade」という目標と「ワークスペースアーティファクトの解決」にチェックを入れました。

失敗しています

--- maven-shade-plugin:1.6:shade (default-cli) @ AAA ---
[ERROR] The project main artifact does not exist. This could have the following
[ERROR] reasons:
[ERROR] - You have invoked the goal directly from the command line. This is not
[ERROR]   supported. Please add the goal to the default lifecycle via an
[ERROR]   <execution> element in your POM and use "mvn package" to have it run.
[ERROR] - You have bound the goal to a lifecycle phase before "package". Please
[ERROR]   remove this binding from your POM such that the goal will be run in
[ERROR]   the proper phase.

この時点で考えが尽きました。

4

2 に答える 2

7

シェード プラグインは、プロジェクトのアーティファクトをシェーディングされた JAR に含めようとしています。(まだ) 存在しないため、このエラーが発生しています。最初にプロジェクト アーティファクトをビルド/パッケージ化する必要があります (たとえば、shade ゴールをパッケージ フェーズにアタッチすることにより)。

シェーディング JAR に含めるプロジェクト アーティファクトがない場合は、excludesノードを追加して、プロジェクトのアーティファクトを削除できます。

次に例を示します。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>com.group.id.Launcher1</mainClass>
                        </transformer>
                    </transformers>
                    <excludes>
                        <exclude>com.my.proj:AAA</exclude>
                    </excludes>
                </configuration>
            </execution>
        </executions>
    </plugin>
于 2013-08-24T19:20:46.973 に答える