3

私のTalend Open Studioコンポーネントにはリソースがありますが、Javaソースはありません(純粋にメタデータコンポーネントです)。このような場合、JAR ファイルの生成を無効にする必要があります。

maven-jar-plugin を次のように構成しました。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <forceCreation>false</forceCreation>
            <skipIfEmpty>true</skipIfEmpty>
            <useDefaultManifestFile>false</useDefaultManifestFile>
        </configuration>
      </plugin>

しかし、私はまだ、pom.properties、pom.cml、マニフェスト、および "class {}" のみを含む空のファイル App.class を含む ${project.name}.jar ファイルを取得します。

これを使用して、すべてのMavenのインクルードを無効にすることができますが:

<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>

その中にマニフェストファイルを含むJARをまだ取得しています

設定を誤った設定パラメータはありますか?

4

3 に答える 3

9

jarの作成を無効にする最も効率的な方法は、次のmaven-jar-pluginように構成することです。

<plugins>
    <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <executions>
            <execution>
                <id>default-jar</id>
                <phase>none</phase>
            </execution>
        </executions>
    </plugin>
</plugins>

デフォルトのjar作成がnoneフェーズに配置され、実行されることはありません。

于 2012-11-06T22:06:40.903 に答える
1

単なる回避策であっても、自分で解決策を見つけました。/src/main/java ディレクトリが存在しない場合は、delete antrun タスクを使用して JAR を削除します。

<!-- remove the empty JAR if not needed -->
<if>
    <not><available file="${basedir}/src/main/java" type="dir" /></not>
    <then>
    <delete file="${project.build.directory}/${project.name}-${project.version}.jar"/>
    </then>
</if>

このタスクを正しく機能させるにはantcontribが必要であり、mavenを使用してリリースを計画している場合は機能しません(ただし、Talend Open Studioプラグインなどのメタデータのみのコンポーネントでは問題ありません)。

于 2012-11-04T14:33:59.207 に答える
1

META-INF/maven/* /pom を生成しないように maven-jar-plugin に指示できます。Maven Archiver Referenceで説明されているように、ファイル。

また、skipIfEmptyオプションを使用することもできます。

次のコードは、これらの両方を組み合わせたものです(コピーして貼り付けるだけです)

...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <skipIfEmpty>true</skipIfEmpty>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                </archive>
...

これは正常に機能しますが、実行するとmvn install、プロジェクトのアーティファクトが見つからないために失敗します。同様の問題はおそらくmvn deployリリース時とリリース時に発生するでしょうが、私はこれらをチェックしませんでした.

ただし、antrun の delete を使用できる場合、このプロパティskipIfEmptyはおそらく適切に機能し、もう少しエレガントです。少なくとも、新しい実行やその依存関係などは導入されません。

于 2012-11-06T23:19:07.953 に答える