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


113

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>

回答:


168

これが答えかどうかはわかりませんが、正しい方向に導く可能性があります...

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

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

これが要約すると、コマンドです...

mvn clean install

とは異なります...

mvn clean install:install

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

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

前者を試してみてください、あなたのエラーはただ消えるかもしれません!


Bambooを実行していますが、mvn install:install any in config
Pra_A

96

TL; DRこの問題を修正jarするにmaven-jar-pluginは、次のように、パッケージングプラグインを呼び出す前に、たとえば、パッケージング用に呼び出します。

mvn jar:jar install:install

または

mvn jar:jar deploy:deploy 

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

取得このアプローチは、異なるパッケージ(ear / war / jar / zip)のマルチモジュールプロジェクトがある場合は機能しません。さらに悪いことに、間違ったアーティファクトがインストール/デプロイされます。このような場合は、reactorオプションを使用して、デプロイ可能なモジュール(たとえばwar)のみをビルドします。


説明

いくつかのケースでは、実際に直接実行したいinstall:installdeploy:deployの目標(あることからmaven-deploy-plugindeploy目標ではなく、Mavenのdeploy )とあなたが迷惑に終わるでしょうThe packaging for this project did not assign a file to the build artifact

典型的な例は、CIジョブ(JenkinsやBambooジョブなど)で、さまざまなステップでさまざまな側面について実行/ケアしたい場合があります。

  • 最初のステップはmvn clean install、テストとテストカバレッジの実行です。
  • 第二段階は、例えば、品質のプロファイルに基づいてSonarqube分析だろうmvn sonar:sonarプラスさらにオプション
  • 次に、テストの実行が成功し、品質ゲートに合格した後でのみ、最終的なプロジェクトアーティファクトをMavenエンタープライズリポジトリにデプロイしますがmvn deploy、以前のフェーズを再度実行する(そしてコンパイル、テストする)ため、再実行したくありません。、など)そしてあなたはあなたのビルドが効果的でありながら高速であることを望んでいます。

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

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

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

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

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

しかし、問題がないとして拒否されました。

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

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

それで、それを修正する方法は?
同様の3番目/最後のステップで次のコマンドを実行するだけです。

mvn jar:jar deploy:deploy

maven-jar-pluginビルドの一部として任意のjarファイルを再作成しません、そのおかげforceCreationオプションセットにfalseデフォルトで:

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

しかし、それは私たちのためにうまくビルドコンテキストを投入し、deploy:deploy幸せにします。スキップするテスト、追加するプロファイルはありません。ちょうどあなたが必要なもの:スピード。


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

mvn validate jar:jar deploy:deploy

さらにもう1つの注意:パッケージがない場合jarは、代わりに、インストール/デプロイの前warに使用してwar:warください。

ガッチャとは、マルチモジュールプロジェクトのチェック行動、上記指摘しました。


8
この正確なシナリオに遭遇しました。素晴らしい記述-かなり簡潔な「あなたはそれを行うことができない」説明ではなく、デプロイプラグインFAQにあるはずです。
markdsievers 2016

jar jarは結局便利だと誰が思ったでしょう;)
wearego

マルチモジュールプロジェクトの私のソリューションを参照してください:stackoverflow.com/a/57824874/318174
Adam Gent

このソリューションは、私のマルチモジュールプロジェクト@AdamGent
karakaysで問題なく

素晴らしい説明。Jenkinsサーバーでの私のシナリオを正確に説明しました。
wimnat

14

この返信は、この問題に直面している他の人を助けるために非常に古い質問にあります。

IDE Javaを使用してプロジェクトで作業しているときに、この失敗したエラーに直面しますIntelliJ IDEA

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します。

間違った選択を選択

私は実行すると、選択installの下でLifecycle問題がなくなって、上に示したように、そして私のMavenは正常にコンパイルビルドをインストールします。


6

同じ問題があります。私のエラーメッセージは完全ではありません。しかし、私の場合、ソース付きの世代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>

そのため、デプロイフェーズでは、source:jarゴールを実行して、ソース付きのjarを生成します。そして、導入はBUILD SUCCESSで終わります


2

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


まあ部分的な解決策。
Jasper Lankhorst 2017

2

このエラーは、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>

1

@ A_Di-Matteoの回答は非マルチモジュールで機能しますが、マルチモジュールのソリューションがあります。

解決策はnone、jar / war / earプラグインと、もちろんデプロイプラグインを除いて、すべてのプラグイン構成をオーバーライドして、のフェーズにバインドすることです。あなたが単一のモジュールを持っている場合でも、私の初歩的なテストはこれがパフォーマンスに関して賢い(理由がわからないので)少し速いことを示しています。

したがって、秘訣は、上記のことを実行するプロファイルを作成し、デプロイしたい場合にのみアクティブにすることです。

以下は、shadeプラグインを使用する私のプロジェクトの1つの例で、上書きしないようにjarプラグインを再度オーバーライドする必要がありました。

    <profile>
      <id>deploy</id>
      <activation>
        <property>
          <name>buildStep</name>
          <value>deploy</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <executions>
              <execution>
                <id>default-compile</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>default-testCompile</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>test-compile</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>default-test</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
              <execution>
                <id>default-install</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>default-resources</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>default-testResources</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <id>default</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <id>default-jar</id>
                <configuration>
                  <forceCreation>false</forceCreation>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

ここで実行mvn deploy -Pdeployすると、jarとプラグインのデプロイのみが実行されます。

オーバーライドする必要のあるプラグインを特定するには、デプロイを実行してログを確認し、実行中のプラグインを確認します。idプラグインの名前の後に括弧で囲まれているプラ​​グイン構成のを必ず追跡してください。


0

同じ問題がありましたが、最初にmvn installを実行しました(前述したように、install:installではありません)。

解決策は以下を含めることです:

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.