2012-03-03 12 views
0

これは疑問やご意見です。しかし、私はそれが私が間違って何かをしているかもしれない質問として質問するつもりです。Maven:テストをスキップしても確実に失敗する

私の問題は、mavenビルドでテストをスキップしたかったということです。eclipseプラグインでは、mavenを実行しているときにconfigureのスキップテストオプションをチェックしました。 Test surefireプラグインでまだ失敗していましたが、バージョン2.4.3をダウンロードできませんでした(私の以前のMavenプロジェクトは2.7.2を使用していましたが、すでに私のレポにありました)ので、テストをスキップして試しました。失敗しました。

私は既に持っていたsurefireの2.7.3プラグインを使用するように私のPOMを設定しましたが、それはスキッピングテストとしか言いませんでした。今、私の混乱は、それがすでにSKIPにテストパートに行くときに、なぜダウンロードに迷惑を掛け、確実なプラグインがあるかどうかを確認することです。ちょうどそれをスキップすると私は言う..

よく、あなたが何かをスキップすると、あなたがそれを使用するかのようにプラグインがまだダウンロードされているのは正常な動作です。それとも、私がそれをダウンロードさせて間違ってやっていたのですか?

「Effective POM」と呼ばれる新しいものがあり、プラグイン管理エリアにsurefireプラグイン2.4.2のリストが含まれている可能性があります。これは、mavenプロジェクトをm2eclipseを使用してEclipseでインポートしたときに有効ですPOM。以前は、mavenプロジェクトを作成するときにNetBeansでこれを見たことがありませんでした。

私のビルドプロファイルに不要なsurefireプラグインエントリを追加してテストをスキップし、私のレポに既に入っているバージョンを追加しました。私は私のプロジェクトが日食の下でも構築できるようにこれをしました。他の賢明なプロジェクトはNetBeansと簡単なコマンドラインで問題なく動作します。

私はmavenが最初にSKIP部分を見て、次にプラグインの使い方に進むことができるはずだと思います。

サイード..あなたは、あなたがプラグインを使用して、プラグインの設定の違いを理解していなかった言及したものに基づい

+0

入手したエラーメッセージを投稿できますか?そしてpom(抜粋)が役に立つでしょう。 – khmarbaise

+0

エラーは、確信しているプラ​​グイン2.4.3をダウンロードすることができなかったと述べていて、手動でダウンロードして手動で追加するように求めました。だから私は2.7.2を使用した(申し訳ありません2.7.3ではなかった)。今私はそれを私のPOMに加えました。 eclipseプラグインにはPom.xmlの新しいセクションがありました。このセクションは、プラグイン管理セクションに2.4.3プラグインバージョンがあるEffective POMと呼ばれていました。私は実際のPOMに2.7.2を加えてそれを乗り越えました。 (効果的なPOMは編集不可能なPOMでした。私はEclipseが実際に私と一緒に使うと思う) – sarmahdi

+0

有効なpomは、プロジェクトの現在のpomと混合されたmavenのスーパーポームです。より正確には、ポンはスーパーポンムから物を受け継いでいます。これをコマンドラインでmvn helpを介して出力することもできます:effective-pom ... – khmarbaise

答えて

0

。この場合、あなたはプラグインを使用しています(あなたのビルドエリアにあるか、すでにスーパーポッドを経由して来ていると分かります)。さらに、maven-surefire-plugin in version 2.7.3が存在しないにもかかわらずテストをスキップしようとしています。

設定パラメータskipはテストを実行するだけでなく、コンパイルしません。限られた時間だけテストを無視するのではなく、 "skipTest"パラメータを使うことができます。これはスキップする矛盾でテストをコンパイルし続けます。

私は(その間にバージョン2.12に存在する)のmaven-確実な - プラグインのバージョンを定義するために、プロジェクトまたはあなたの親ポンポンのpluginManagementセクションを使用することをお勧めします...

次のスニペットmaven-surefireプラグインのどのバージョンが使用されるかを制御するpomにpluginManagementパートを追加します。

<build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.11</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
    .. 
    </build> 

あなたのプロジェクトに出力効果的なポンポンがそうでなければ、あなたが最初のプロジェクトの設定を更新する必要があるかもしれません...あなたのバージョンを与えるべきPOMことを挿入した後。

+0

私はビルドから2.7.2を持っていて、独自のレポをダウンロードしています。あなたのリンクを見てくださいevev 2.7.2は古いバージョンです。プロジェクトをeclipseに追加し、Eclipse用のmavenプラグインを使用すると、OLDerプラグインのリストを表示する効果的なPOMが作成されました。私はそれが2.4.3を使用して確認するためにEclipseプラグインに配線されていたと思います。私は効果的なPOMにある多くのプラグインが実際には非常に古いことを知っています。効果的なPOMをコントロールすることはできないので、そこでは何も変更できません。 – sarmahdi

+0

eclipseプラグインはこれと関係がありません。これはmaven(super pom;前述のように)に基づいているためです。 – khmarbaise

0

テストのコンパイルと実行は、mavenのデフォルトlifecycleの一部です。 mavenは実行テストを行うために確実に使用するので、確実にダウンロードする必要があります。skipTestsはmavenの設定ではなく、確実なプラグインの設定です。プラグインは、mavenがskip testsになる必要があると判断します。

確信しているプラ​​グインの2.4.3は、valid versionですが、2.0.6のバージョンで動作します。ほとんどの場合、新しいMavenを使用している可能性がありますが、何らかの理由で古いMavenバージョンのsuper pomがシステムに存在します。

0

skipTestは、テストライフサイクルをスキップするようにmavenに指示しません。確信しているプラ​​グインは、テストを実行しないように指示します。プラグインはまだライフサイクルの一部です(呼び出されたときは何もしません)。したがって、あなたのエラー。

確信が持てないようにするには、独自のパッケージを定義する必要があります(確実なパッケージ化は標準的なパッケージングライフサイクルの一部です)。これは、確かに動作する確実なバージョンのあなた(あなたのセクションの右側にセクションを追加)。

関連する問題