2016-12-05 12 views
0

私のpom.xml全体は以下の通りです。このpomを使用して、私はこのエラーをEclipseの "ライフサイクル設定でカバーされていないプラグインの実行:org.apache.cxf:cxf-java2ws-plugin:3.1.8:java2ws(実行:プロセスクラス、フェーズ:プロセスクラス)"とします。 それでも、正常に動作します。私は、 "mvn clean package install"を実行すると、出力wsdlファイルが必要になります。pluginManagementを削除したときにwsdlを作成できるのはなぜですか?

pluginManagementを追加した場合、Eclipseのエラーは消えてしまいますが、wsdlファイルを望んでも得られません。私がそれについて見つけた2つの最も近い議論は "Publishing wsdl java M2E plugin execution not covered"と "How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds"でしたが、私はそれらを理解しませんでした。私の知る限り見ることができるように、アイデアは

"<lifecycleMappingMetadata>...<action><execute/>". 

私のストレート質問を利用するように変更することです:私はpluginManagementを奪うとき、私の下のポンポンが働くんなぜですか?私は、プラグイン管理と実行の間の関係に関する基本的な知識が不足しているとは確信していません。私の質問から最も関連性の高い部分は、Eclipseで何が問題になっているかではありません(Eclipseを無視する人はほとんどいません)。

私はpluginManagementをしばらく使用してきましたが、私はpomに追加された特別な機能を正確には疑問に思っていません。今はjava2wsで失敗しているので、私は実際には、私はそれを取得し、pluginManagementと目標> java2wsで実行するために私のPOMに追加する必要がある追加の構成があるかどうか理解することに興味があります。

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>grp</groupId> 
    <artifactId>art</artifactId> 
    <packaging>war</packaging> 

    <version>0.0.1-SNAPSHOT</version> 
    <name>art Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <jdk.version>1.8</jdk.version> 
     <cxf.version>3.1.8</cxf.version> 
     <spring.version>4.3.4.RELEASE</spring.version> 
     <!-- <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> --> 
    </properties> 

    <dependencies> 
     <!-- Spring dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <!-- Apache cxf dependencies --> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-frontend-jaxws</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-transports-http</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <!-- servlet & jsp --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>javax.servlet.jsp-api</artifactId> 
      <version>2.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.1.2</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>art</finalName> 
     <!-- <pluginManagement> --> 

      <plugins> 

       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.2</version> 
        <configuration> 
         <source>${jdk.version}</source> 
         <target>${jdk.version}</target> 
        </configuration> 
       </plugin> 

       <plugin> 
        <groupId>org.apache.cxf</groupId> 
        <artifactId>cxf-java2ws-plugin</artifactId> 
        <version>${cxf.version}</version> 
        <executions> 
         <execution> 
          <id>process-classes</id> 
          <phase>process-classes</phase> 
          <configuration> 

           <className>art.VmxService</className> 

           <outputFile>${project.basedir}/src/main/resources/VmxService.wsdl</outputFile> 
           <genWsdl>true</genWsdl> 
           <verbose>true</verbose> 

           <address>http://localhost:9080/art/VmxService</address> 
          </configuration> 
          <goals> 
           <goal>java2ws</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

      </plugins> 
<!--  </pluginManagement> --> 
    </build> 
</project> 

答えて

0

pluginManagementセクションは、依存関係管理セクションと同様の目的を果たします。これは、実際にプラグインをビルドライフサイクルに追加することなく、プラグインとそのバージョンと設定のデフォルトを定義します。

プラグインがモジュールに追加されると、pluginManagementセクションから設定を取得します。

も参照してください:同じプラグインの同様の構成は、複数のモジュールで使用されている場合Maven: What is pluginManagement?

だから、あなたは一箇所にまとめ、それらを収集することができます。プラグインが1つのモジュールでのみ使用されている場合、私はそれを直接ビルドに入れたいと思っています。しかし、両方の方法で動作します。

また、プラグインをbuild.pluginsに追加する必要があることを覚えておいてください。pluginManagementでプラグインを追加するだけで何もしません。

Eclipseでの警告は、IDEのライフサイクルに関連しています。これは、Mavenのライフサイクルと少し違っていて、プラグインが実行される瞬間を検出できない(またはできない)ことがあります。いくつかのプラグインは、Mavenプロジェクトなしでは実行できません。したがって、ライフサイクルマッピングプラグインが解決しようとしていることは決してわかりません:/

とにかく:あなたがmavenビルドを使用してクラスを生成していれば、これはあなたのために働きます。 Mavenのないプロジェクト)あなたは良いです。

私は情報(ライフサイクルマッピング)がプラグインに直接焼き付けられ、m2eclipseプラグインによって読み込まれると考えました。私はいくつかのプラグインでこのようなxmlファイルを見てきました。したがって、ライフサイクルマッピングプラグインは、もはや必要なくなるかもしれません。

+0

ウェム、確かに私の質問に100%答えました。 Eclipseユーザーの場合は最後のコメントですが、「Eclipseの警告はIDEのライフサイクルに関連しています」を設定する方法を知っていますか? – DemeCarvO

+1

私は日食の進化について最新ではないので、申し訳ありません。私は過去のライフサイクルマッピングの警告を無視しました。それはちょうどどこかの検証設定かもしれませんか?通常、Eclipseのすべての警告を無効にするか、優先順位を変更することができます。 – wemu

関連する問題