2010-12-14 9 views
0

リソースフェーズのリソース目標は、ビルドフェーズの場合よりも テストフェーズでは異なる設定にする必要があります。テストの際には、src/main/resourcesからstuff を除外する必要があります。それが実行できないようですtestResourcesゴール は、私は必要なもののために無関係であり、リソースの目標は、両方のテストで有効になりポンポン定義で唯一 設定を、持っていると 相を構築することができます...テスト時にmavenリソースを設定する

例えば、私はテスト段階で異なる(一部 除く)を探すために、以下の設定が必要になりたい:

  <resources> 
      <resource> 
       <directory>${project.basedir}/src/main/java</directory> 
       <includes> 
        <include>**/*.java</include> 
        <include>service.properties</include> 
       </includes> 
      </resource> 
      <resource> 
       <directory>${project.basedir}/src/main/resources</directory> 
       <includes> 
        <include>**/*.xml</include> 
        <include>**/*.properties</include> 
       </includes> 
      </resource> 
      </resources> 

私は <testResources>に「/メイン/ * SRC」を定義することができますが、それは残念ながら「できれば理想的な動作は次のようになり今すぐ行うことができます

私がそれを理解していない場合は、お手伝いをしてください。

答えて

0

おそらく、テスト時には含まれていない別のプロジェクトとしてリソースを用意する必要があります。これは混乱です。

私はあなたがこれをやりたい理由を想像することができますが、その時点で実際にアーティファクトをテストしているわけではありません。

これはIoCが本当に輝く場所です。コンポーネントは、リソース(テストまたは実際)を選択する必要があるランタイム選択コードを持つ必要があるコンポーネントではなく、リソースを注入します。テストコードはテストを選択するコードをテストできないため、これは重要です。もし私が何を意味するのか分かりましたら:-)

もしあなたがSpringを使用しているのであれば、あなたがしたい変更のためのbeanオーバーライドを含むtest-context.xmlを作成して、他のすべてのコンテキストをロードした後に読み込みます。ロードされると、Beanがオーバーライドされているという警告が表示されます。テストBeanが実稼働Beanをオーバーライドしていることを初めて確認します。その後、そのBeanは期待通りに注入する必要があります。

+0

私はそれをやりたい理由は、実際には2つのスプリングコンテキスト(app/test)が原因です - クラスとテストクラスで同じ名前のスプリングビーン定義... ....コードを変更するのではなく、このようなもの...そうでなければ競合の名前付け – lisak

+0

私は春に何が起こったのかについて上記を編集しました。これは非常に一般的なケースであり、コンパイルの変更や複数のアーティファクトの生成を必要としません。さらなる質問がある場合はお知らせください。さらに更新することができます。 –

+0

ちょっとブライアン、ありがとうございますが、あまりにも複雑です。プロジェクトのクラスパスには700個の豆があり、依存関係の1つに何百もの豆があります。これらの豆のテストコンテキストは...豆をオーバーライドするだけでは不十分です。解決策ではなく、本当に答えが必要です。 – lisak

関連する問題