1

私はmavenにとても慣れていません。wsdl2java を使用して Java ファイルを取得し、必要な jar ファイルを作成しています。問題は、URL がさまざまなソースから取得され、最終的に 4 つの異なる jar ファイルが必要になることです。

これまでのところ、最初の 2 つの jar ファイルを作成し、次の 2 つのファイルを後で処理しようとしました。そのため、「ビルド」ブロックに 2 つの異なる「実行」ブロックを作成しました。各「実行」ブロックは、それぞれ独自の wsdl ファイルをダウンロードします。これまでのところ、問題ありません。次のプラグイン:

org.codehaus.mojo axistools-maven-plugin

このように動作します。最初に、生成されたすべての Java ファイルをコンパイルし、次にすべてのファイルから jar ファイルを生成します。つまり、jar ファイルを 1 つだけ作成します。

とにかく、各「実行」ブロックの直後にwsdl2javaにコンパイルしてからjarファイルを作成するように依頼しますか? その「実行」ブロックでダウンロードした wsdl ファイルのみにそれぞれ関連する 2 つの異なる jar ファイルを取得できるということですか?

以下は pom.xml です。この時点で、生成された jar ファイルは、file1、file2、file3、file4、および file5 から生成された Java ファイルで構成されます。

file1、file2、file3 から 1 つの jar を取得し、file4 および file5 からもう 1 つの jar を取得します。

どんな助けでも大歓迎です。

<build>
<plugins>    
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>axistools-maven-plugin</artifactId>
    <version>1.4</version>        
    <dependencies>          
      <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.1</version>
      </dependency>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1</version>
      </dependency>
    </dependencies>
    <executions>
      <execution>
      <id>prod</id>          
        <goals>
          <goal>wsdl2java</goal>
        </goals>
        <configuration>    

      <urls>
        <url>https://file1.svc?wsdl</url>
        <url>https://file2.svc?wsdl</url>
        <url>https://file3.svc?wsdl</url>                        
      </urls>

      <allElements>true</allElements>
      <wrapArrays>false</wrapArrays>
      <testCases>false</testCases>
      <serverSide>false</serverSide>
      <typeMappingVersion>1.2</typeMappingVersion>                      
    </configuration>
      </execution>

      <execution>
      <id>sandbox</id>
        <goals>
          <goal>wsdl2java</goal>
        </goals>
        <configuration>
        <sourceDirectory>${basedir}/wsdl</sourceDirectory>

    <useEmitter>true</useEmitter>        
<wsdlFiles>
    <wsdlFile>file4.wsdl</wsdlFile>
    <wsdlFile>file5.wsdl</wsdlFile>
</wsdlFiles>    

      <allElements>true</allElements>
      <wrapArrays>false</wrapArrays>
      <testCases>false</testCases>
      <serverSide>false</serverSide>
      <typeMappingVersion>1.2</typeMappingVersion>                             
    </configuration>
      </execution>          
    </executions>
</plugin>
</plugins>
</build>

コメントするには長すぎるので、元の投稿を編集する必要がありました...

返信いただきありがとうございます。私はあなたの解決策を試しました。ご存じのとおり、「axistools-maven-plugin」には「maven-compiler-plugin」と「maven-jar-plugin」が組み込まれています。最初に、指定された URL からすべての wsdl ファイルをダウンロードします。異なる出力ディレクトリを作成します。ただし、コンパイル フェーズでは、すべての出力ディレクトリ内のすべての Java ファイルを一度にコンパイルしようとします。一般的な賭けであるいくつかのJavaファイルがあるため。これらの wsdl ファイルを使用すると、コンパイル時に「クラスが重複しています」というエラーが発生します。

独自のカスタム「maven-compiler-plugin」および「maven-jar-plugin」ブロックを定義し、「include」または「exclude」ブロックを追加して、コンパイルするファイルとjarファイルの作成方法をmavenに知らせることができますが、 「axistools-maven-plugin」は最初に独自の「maven-compiler-plugin」を実行するため、最初にすべての Java ファイルをコンパイルしようとしますが、「maven-compiler-plugin」を確認する前に「duplicate class」エラーが発生します。 「maven-jar-plugin」ブロック。

4

2 に答える 2

0

1 つのアイデア: <outputDirectory>axistools プラグインの実行ごとに定義します (「classesProd」や「classesSandbox」など)。

次に、 を複数回実行してmaven-jar-plugin、これらのファイルから jar を構築します。各 jar プラグインの実行は、<classesDirectory>対応する<outputDirectory>axistools の実行を指定します。2 番目の jar が最初の jar を上書きしないように、jar 実行のを定義<classifier>または変更する必要があります。<outputDirectory>

于 2012-05-25T01:03:46.010 に答える
0

wsdl2java の構成セクションに nsExcludes を追加することで、重複する Java クラスの作成を回避することができました。

<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<nsExcludes>
  <nsExclude>http://lang.java</nsExclude>
  <nsExclude>http://rmi.java</nsExclude>
</nsExcludes>
...
于 2013-12-04T16:28:48.330 に答える