web-dev-qa-db-ja.com

Maven:このプロジェクトのパッケージは、ビルドアーティファクトにファイルを割り当てませんでした

Mac 10.6.6でMaven 3.0.3を使用しています。 JARプロジェクトがあり、コマンド「mvn clean install:install」を実行すると、エラーが発生します。

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-install-plugin:2.3.1:install (default-cli) on project StarTeamCollisionUtil: The packaging for this project did not assign a file to the build artifact -> [Help 1]

これはどういう意味ですか、どうすれば修正できますか?以下はpom.xmlです。他に役立つ情報を教えてください。この投稿を編集します。ありがとう、-デイブ

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.starteam.util</groupId>
<artifactId>StarTeamCollisionUtil</artifactId>
<packaging>jar</packaging>
<name>StarTeam Collision Util</name>
<description>
    The StarTeam Collision Utility provides developers and release engineers alike the ability to
    compare files attached to a set of CRs to see if conflicts exist in the change set.
</description>
<version>1.0-SNAPSHOT</version>
<url>http://cm-build.myco.com:8080/hudson/view/Tools/job/StarTeamCollisionUtil - TRUNK/</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
    <repository>
        <id>myco-sonatype-nexus-snapshots</id>
        <name>MyCo Sonatype-Nexus Snapshots</name>
        <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>starteam</groupId>
        <artifactId>starteam</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>${basedir}/lib/starteam110.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.8.1</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.1</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
        </plugin>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.0-beta-3</version>
            <configuration>
                <reportPlugins>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-report-plugin</artifactId>
                        <version>2.5</version>
                    </plugin>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.7</version>
                        <configuration>
                            <linksource>true</linksource>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-jxr-plugin</artifactId>
                        <version>2.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>versions-maven-plugin</artifactId>
                        <version>1.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-project-info-reports-plugin</artifactId>
                        <version>2.3.1</version>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>index</report>
                                    <report>dependencies</report>
                                    <report>dependency-management</report>
                                    <report>cim</report>
                                    <report>issue-tracking</report>
                                    <report>license</report>
                                    <report>scm</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </reportPlugins>
            </configuration>
        </plugin>
    </plugins>
</build>
<distributionManagement>
    <repository>
        <id>sonatype-nexus</id>
        <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
    </repository>
</distributionManagement>
<scm>
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</scm>
<issueManagement>
    <system>StarTeam</system>
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</issueManagement>
<ciManagement>
    <system>Hudson</system>
    <url>http://cm-build.myco.com:8080/hudson/</url>
</ciManagement>
</project>
98
Dave

これが答えかどうかわかりませんが、正しい方向に導くかもしれません...

コマンド install:install は、実際には maven-install-plugin の目標です。これは、install mavenライフサイクルフェーズとは異なります。

Mavenライフサイクルフェーズ は、特定のプラグインがバインドできるビルドのステップです。単一のライフサイクルフェーズを呼び出すと、さまざまなプラグインのさまざまな目標が実行される場合があります。

要約すると、コマンドは...

mvn clean install

とは異なります...

mvn clean install:install

前者は、インストール(コンパイル、パッケージ、テストなど)に至るまでのすべてのサイクルですべての目標を実行します。後者はコードをコンパイルしたりパッケージ化することさえせず、その1つの目標を実行するだけです。例外を見て、この種は理にかなっています。それについて話します:

StarTeamCollisionUtil:このプロジェクトのパッケージは、ビルドアーティファクトにファイルを割り当てませんでした

前者を試してみると、エラーがなくなるかもしれません!

143
Jesse Webb

TL; DRこの問題を解決するには、パッケージングプラグインを起動します。 jarパッケージの場合は、次のようにmaven-jar-pluginを使用します。

mvn jar:jar install:install

または

mvn jar:jar deploy:deploy 

実際に展開する必要がある場合。

Gotcha異なるパッケージ(ear/war/jar/Zip)を持つマルチモジュールプロジェクトがある場合、このアプローチは機能しません-さらに悪いことに、誤ったアーティファクトインストール/デプロイされます!そのような場合、リアクターオプションを使用して、デプロイ可能なモジュール(warなど)のみをビルドします。


説明

場合によっては、実際にinstall:installまたはdeploy:deployゴールを直接実行したい(つまり、Maven deployではなく、maven-deploy-plugindeployゴールから phase )、迷惑なThe packaging for this project did not assign a file to the build artifactになってしまいます。

典型的な例は、CIジョブ(たとえば、JenkinsやBambooのジョブ)です。ここでは、さまざまなステップでさまざまな側面を実行/ケアしたいと考えています。

  • 最初のステップは、テストとテストカバレッジを実行するmvn clean installです。
  • 2番目のステップは、品質プロファイルに基づくSonarqube分析です。 mvn sonar:sonarとその他のオプション
  • その後、テストの実行と品質ゲートが成功した後にのみ、Mavenエンタープライズリポジトリに最終プロジェクトアーティファクトをデプロイしますが、mvn deployを再実行する必要はありません。テストなど)、ビルドは効果的であるが、まだfastである必要があります。

はい、少なくともテストをスキップする(コンパイルと実行、 -Dmaven.test.skip=true を介して)この最後のステップを高速化するか、特定のプロファイルで再生する(できるだけ多くのプラグインをスキップする)ことができますが、単純にmvn deploy:deployを実行することをクリアします。

ただし、 プラグインFAQによる :も指定されているため、上記のエラーで失敗します。

パッケージング段階では、すべてが収集され、コンテキストに配置されます。このメカニズムにより、Mavenはmaven-install-pluginおよびmaven-deploy-pluginが同じファイルセットをコピー/アップロードしていることを確認できます。したがって、deploy:deployのみを実行すると、コンテキストにファイルが配置されず、デプロイするものもありません。

実際、deploy:deployには、以前のフェーズ(または以前のプラグイン/目標の実行)によってビルドコンテキストに配置されたランタイム情報が必要です。

また、潜在的なバグとして報告されています:MDEPLOY-158 :deploy:deployは、アーティファクトをMavenリモートリポジトリにデプロイする場合のみ機能しません

しかし、その後、問題ではないと拒否されました。

maven-deploy-plugindeployAtEnd 構成オプションは、実行する中間ジョブステップがあるため、特定のシナリオではどちらにも役立ちません。

すべてのプロジェクトを独自の展開段階で展開するか、マルチモジュールビルドの最後に展開するか。 trueに設定してビルドが失敗した場合、どのリアクタプロジェクトもデプロイされません。 (実験的)

だから、それを修正する方法は?
このような同様の3番目/最後のステップで、以下を単純に実行します。

mvn jar:jar deploy:deploy

maven-jar-pluginは、デフォルトでforceCreationに設定されている false オプションのおかげで、ビルドの一部としてjarを再作成しません。

内容が変更されていないように見える場合でも、jarプラグインを使用して新しいJARを作成する必要があります。デフォルトでは、このプラグインは出力jarが存在し、入力が変更されていないかどうかを確認します。これらの条件に該当する場合、プラグインはjarの作成をスキップします。

しかし、ビルドコンテキストを適切に設定し、deploy:deployを幸せにします。スキップするテスト、追加するプロファイルはありません。必要なのはスピードだけです。


追記:build-helper-maven-pluginbuildnumber-maven-plugin、または他の同様のプラグインを使用して、後でmaven-jar-pluginが使用するメタデータ(マニフェストファイルのエントリなど)を生成する場合、おそらくvalidateフェーズにリンクされた実行があります。 jar:jarビルドステップ中にそれらを保持します(しかも高速実行を維持します)。この場合、ほとんど無害なオーバーヘッドは、次のようにvalidatephase を呼び出すことです。

mvn validate jar:jar deploy:deploy

さらに別の注記:jarではなく、たとえばwarパッケージ化を使用している場合は、インストール/デプロイの前にwar:warを使用してください。

Gotcha上記で指摘したように、マルチモジュールプロジェクトの動作を確認してください。

73
A_Di-Matteo

この回答は、この問題に直面している他の人を助けるための非常に古い質問に関するものです。

Javaプロジェクトで作業中にこのエラーに直面しました IntelliJ IDEA IDE。

Failed to execute goal org.Apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project getpassword: The packaging for this project did not assign a file to the build artifact

下の画像の赤い矢印で示されているように、install:installの下でPlugins - installを選択すると、これは失敗します。

Choose Wrong Selection

上記のように選択したinstallLifecycleの下で実行すると、問題はなくなり、Mavenインストールコンパイルが正常にビルドされます。

9
ArifMustafa

同じ問題があります。私のためのエラーメッセージは完全ではありません。しかし、私の場合、ソースを含む生成jarを追加しました。このコードをpom.xmlに配置することにより:

<build> 
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.2</version>
                <executions>
                    <execution>
                        <phase>deploy</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

したがって、デプロイフェーズでは、ソースを含むjarを生成するsource:jarゴールを実行します。そして、ビルドはBUILD SUCCESSで終了します

5
lstrzelecki

jarなどのターゲットファイルをクリアする必要があります。C:.m2でフォルダーをドライブし、.jarファイル、Snaphotファイルをインストールおよび削除する場所を確認し、ターゲットファイルを削除してから、実行されるアプリケーションを削除します。

3
Traduce

私は同じ問題を抱えていましたが、最初にmvn installを実行しました(前述のinstall:installではありません)。

解決策は次のとおりです。

 <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
 </plugin>

プラグイン管理セクションへ。

0
Denys

このエラーは、maven-install-pluginバージョン3.0.0-M1(または同様の)を使用すると表示されます

すでに上記で説明したように、ここでも次のプラグインバージョンが機能します。

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
    </plugin>
0
k_o_