0

Java 以外の Maven アーティファクトを作成しています。では、いくつかの依存関係を解決してから、プラグインpom.xmlを使用してカスタム スクリプトを実行します。exec一部のファイルはディレクトリに作成されますが、Maven はそれらを jar にパッケージ化するときに認識しません。

2 回実行するmvn packageと、2 回目の実行で jar にリソース ファイルが含まれます。

なぜこれが起こっているのですか?スクリプトはフェーズ中に実行されるため、フェーズが jar を作成しているcompileときに、ファイルは既に作成されています。package


これは私のpom.xml構成の関連する(うまくいけば)部分です:

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
            <execution>
                <id>build-plugin</id>
                <phase>compile</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <executable>bash</executable>
                    <arguments>
                        <argument>build_plugin.sh</argument>
                        <argument>${workspace}</argument>
                        <argument>${plugin}</argument>
                    </arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

<resources>
    <resource>
        <directory>${project.basedir}/${outputPath}</directory>
        <includes>
            <include>**</include>
        </includes>
        <excludes>
            <exclude>target/**</exclude>
        </excludes>
    </resource>
</resources>

すべての変数とパスは有効です。2 回目の実行では、予想される内容の jar を取得しています。しかし、最初の間ではありません。

4

1 に答える 1

1

Maven Default Lifecycle では、コンパイル前にリソースの処理が行われますhttps://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Referenceを参照してください

あなたがしなければならないことは、「exec-maven-plugin」のビルドフェーズを変更することです.「compile」の代わりに「generate-sources」を使用してください.

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
            <execution>
                <id>build-plugin</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <executable>bash</executable>
                    <arguments>
                        <argument>build_plugin.sh</argument>
                        <argument>${workspace}</argument>
                        <argument>${plugin}</argument>
                    </arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

<resources>
    <resource>
        <directory>${project.basedir}/${outputPath}</directory>
        <includes>
            <include>**</include>
        </includes>
        <excludes>
            <exclude>target/**</exclude>
        </excludes>
    </resource>
</resources>
于 2016-04-20T13:07:21.250 に答える