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

StackOverflow https://stackoverflow.com/questions/6308162

質問

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

[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>
役に立ちましたか?

解決

これが答えであるかどうかはわかりませんが、それはあなたを正しい方向に導くかもしれません...

コマンド install:install 実際にはの目標です Maven-Install-Plugin. 。これはとは異なります install メイブンライフサイクルフェーズ。

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

これが要約するのはコマンドです...

mvn clean install

とは異なります...

mvn clean install:install

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

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

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

他のヒント

tl; dr この問題を修正するには、以前にパッケージングプラグインを呼び出します。 jar パッケージングの使用 maven-jar-plugin 、 次のように:

mvn jar:jar install:install

または

mvn jar:jar deploy:deploy 

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

ゴッチャ さまざまなパッケージ(Ear/War/Jar/Zip)を備えたマルチモジュールプロジェクトがある場合、このアプローチは機能しません。さらに悪いことに、間違ったアーティファクトがインストール/展開されます。そのような場合、展開可能なモジュールのみを構築するために、原子炉オプションを使用してください(例: war).


説明

場合によっては、実際に直接実行したい install:install また deploy:deploy 目標(つまり、から maven-deploy-plugin, 、 deploy 目標、メイベンではありません deploy 段階)そして、あなたは迷惑になります The packaging for this project did not assign a file to the build artifact.

古典的な例は、さまざまなステップでさまざまな側面を実行/注意したいCIジョブ(ジェンキンスまたは竹の仕事など)です。

  • 最初のステップはaになります mvn clean install, 、テストとテストカバレッジを実行します
  • 2番目のステップは、品質プロファイルに基づいたSonarqube分析です。 mvn sonar:sonar さらに、さらなるオプション
  • その後、実行の実行と品質ゲートが成功した後にのみ、最終プロジェクトアーティファクトをMaven Enterpriseリポジトリに展開したいが、再実行したくない mvn deploy, 、それは再び以前のフェーズ(およびコンパイル、テストなど)を実行し、ビルドを効果的にしたいが、まだ 速い.

はい、少なくともテストをスキップすることは、この最後のステップをスピードアップすることができます(編集と実行、経由 -Dmaven.test.skip=true)または特定のプロファイルで遊ぶ(できるだけ多くのプラグインをスキップする)が、単純に実行する方がはるかに簡単で明確です mvn deploy:deploy それから。

しかし、上記のエラーでは失敗するでしょう。 プラグインFAQによって:

包装段階の間に、すべてが収集され、コンテキストに配置されました。このメカニズムにより、Mavenはそれを確実にすることができます maven-install-pluginmaven-deploy-plugin 同じファイルのセットをコピー/アップロードしています。したがって、実行するだけです deploy:deploy, 、その後、コンテキストに入力されたファイルはなく、展開するものは何もありません。

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

また、潜在的なバグとして報告されています。 MDEPLOY-158: :deploy:deployは、アーティファクトを展開するためだけに機能しません。

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

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

すべてのプロジェクトを独自の展開フェーズ中に展開するか、マルチモジュールビルドの終了時に展開する必要があるかどうか。に設定されている場合 true そして、ビルドが失敗し、原子炉プロジェクトのいずれも展開されません。 (実験的)

それで、それを修正する方法は?
このような同様の3番目の/最後のステップで次のことを実行するだけです。

mvn jar:jar deploy:deploy

maven-jar-plugin ビルドの一部として瓶を再作成しません。 forceCreation に設定されています false デフォルト:

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

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


追加メモ:使用している場合 build-helper-maven-plugin, buildnumber-maven-plugin または、次のようにメタデータを生成する他の同様のプラグイン maven-jar-plugin (例:マニフェストファイルのエントリ)、あなたはおそらく、にリンクされた実行を持っています validate フェーズでは、あなたはまだそれらを持っていることを望んでいます jar:jar ステップを構築します(それでも迅速な実行を維持します)。この場合、ほとんど無害なオーバーヘッドは validate 段階 次のように:

mvn validate jar:jar deploy:deploy

さらに別の追加メモ:そうでない場合 jar しかし、言う、 war パッケージ、使用 war:war 代わりにインストール/展開する前に。

ゴッチャ 上記のように、マルチモジュールプロジェクトの動作を確認してください。

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

私は自分の取り組んでいる間にこの失敗したエラーに直面しています 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:installPlugins - install, 、下の画像に赤い矢印で尖っているように。

Choose Wrong Selection

選択したら、選択しました installLifecycle 上記のように、問題はなくなり、Mavenインストールコンパイルビルドを正常にコンパイルしました。

同じ問題があります。私へのエラーメッセージは完全ではありません。しかし、私の場合、ソースを備えたジェネレーションジャーを追加しました。このコードを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>

したがって、デプロイではフェーズI実行ソース:ソースを備えたJARを生成するJARゴール。展開はビルドの成功で終わります

jarなどのターゲットファイルをCにcireする必要があります。c:.m2でフォルダーをドライブする必要があります。.m2で、.jarファイル、Snaphotファイル、ターゲットファイルを削除して削除してから削除してから、実行されたアプリケーションをクリーニングする必要があります。

同じ問題がありましたが、実行しました MVNインストール 最初はそうではありません インストール:インストール 前述したように)。

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

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

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

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>

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

解決策は、すべてのプラグイン構成をオーバーライドして、 none JAR/WAR/EARプラグインを除き、もちろん展開プラグインを除きます。単一のモジュールを持っている場合でも、私の初歩的なテストでは、これがパフォーマンスの賢さを少し速く(私が知らない理由で)示しています。

したがって、トリックは、展開するだけでアクティブ化される上記を実行するプロファイルを作成することです。

以下は、シェードプラグインを使用している私のプロジェクトの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 プラグインの名前の後にパレンスするプラグイン構成の。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top