2017-02-04 3 views
0

私はMaven-Inovker-Pluginを使って統合テストを実行しています。統合テストの結果を検証するために、verify.groovyというpost-build-hook-scriptがあります。 groovyスクリプトでは、元のPOMからいくつかのプロパティにアクセスする必要があります。それ、どうやったら出来るの?Maven-Invoker-PluginでScriptVariablesを使い、GroovyでPostBuildHookScriptを使う方法

はこれまでのところ、私はmaven-invoker-pluginのための構成ブロックでこれを入れている:

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-invoker-plugin</artifactId> 
       <version>1.7</version> 
       <configuration> 
        <debug>true</debug> 
        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> 
        <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory> 
        <pomIncludes> 
         <pomInclude>*/pom.xml</pomInclude> 
        </pomIncludes> 
        <postBuildHookScript>verify</postBuildHookScript> 
        <scriptVariables> 
         <param>${skip.var1}</param> 
         <param>${skip.var2}</param> 
        </scriptVariables> 
        <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> 
        <goals> 
         <goal>clean</goal> 
         <goal>package</goal> 
        </goals> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

私はドキュメントhereからscriptVariablesに値を入れています。私はそれが間違っていると確信しています、正しい方法は何ですか?

次に、groovyスクリプトで変数skip.var1skip.var2にアクセスするにはどうすればよいですか?私はこれに関する文書や例を見つけることができません。これまで私は以下のことを試しましたが、うまくいきません。

def var1 = skip.var1 

しかし、私はエラーを取得する:

groovy.lang.MissingPropertyException: No such property: skip for class: Script1 

にはどうすれば正しく変数にアクセスできますか?

+1

私はあなたの統合テスト用フォルダとして 'のsrc /メイン/ it'を使用することをお勧めします...あなたは、統合テストに元のポンポンからの値を与える必要がある場合pomこれは、maven-invoker-pluginの実行中にフィルタリングされた統合テストpomで '@ ... @'を使って行うことができます...最新のバージョンのmaven-invoker-pluginを使用してください... – khmarbaise

答えて

0

で導入されたようです:http://maven.apache.org/plugins/maven-invoker-plugin/integration-test-mojo.html#scriptVariables

はまたのための設定の下に持っていました変数を渡します:

    <scriptVariables> 
         <var1>${skp.var1}</var1> 
        </scriptVariables> 

そして、Groovyスクリプトでは、 var1

だから、これは働いていたものです:

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-invoker-plugin</artifactId> 
       <version>2.0.0</version> 
       <configuration> 
        <debug>true</debug> 
        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> 
        <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory> 
        <pomIncludes> 
         <pomInclude>*/pom.xml</pomInclude> 
        </pomIncludes> 
        <postBuildHookScript>verify</postBuildHookScript> 
        <scriptVariables> 
         <var1>${skip.var1}</var1> 
        </scriptVariables> 
        <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> 
        <goals> 
         <goal>clean</goal> 
         <goal>package</goal> 
        </goals> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
+1

依存関係が間違っているため、プラグインを追加しました!プロジェクトのresourcesフォルダをprojectsDirectoryとして使用しないでください。ベストプラクティスは 'src/main/it'を以下のように使用することです...さらに' 'あなたは明示的に指定する必要はありません。 – khmarbaise

+0

@khmarbaise私は依存関係を削除するように編集しました。なぜそれが追加する必要があるように見えたのかわからない。全体として、バージョンが問題でした。他のヒントをありがとう。質問:なぜ 'src/main/it'ですか?あなたが私に指摘できる特定の理由やドキュメンテーション/例これはテスト用であるため、これを 'src/main'ではなく' src/test/'に入れておくとよいでしょう。 –

+0

私は誤って 'src/it'を[default directory layout](https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout)で読むことができます。 html)。 'src/test'は通常単体テストであり、統合テストではなく、プラグインの統合テストでもありません。他のMavenプラグインの多くの例を参照してください。 – khmarbaise

関連する問題