我对 Maven 很陌生。我正在使用 wsdl2java 来获取 Java 文件,然后创建我需要的 jar 文件。问题是我的网址来自不同的来源,最终我需要有 4 个不同的 jar 文件。
到目前为止,我尝试创建前两个 jar 文件并稍后处理接下来的两个...所以我在“构建”块中创建了两个不同的“执行”块;每个“执行”块下载每个自己的 wsdl 文件,到目前为止一切顺利。以下插件:
org.codehaus.mojo axistools-maven-plugin
以这种方式工作:它首先编译所有生成的 Java 文件,然后从所有文件中生成 jar 文件,这意味着它只创建一个 jar 文件。
无论如何,我要求 wsdl2java 编译然后在每个“执行”块之后立即创建 jar 文件?我可以获得两个不同的 jar 文件,每个 jar 文件仅与我在那个“执行”块中下载的 wsdl 文件有关?
以下是 pom.xml。此时生成的 jar 文件由以下文件生成的 Java 文件组成:file1、file2、file3、file4 和 file5。
我想要一个 jar 来自:file1、file2 和 file3,另一个来自:file4 和 file5。
任何帮助将不胜感激。
<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”块让maven知道要编译哪些文件以及如何创建jar文件,但是由于“axistools-maven-plugin”首先运行它自己的“maven-compiler-plugin”,它首先尝试编译所有Java文件,但在查看我们的“maven-compiler-plugin”之前仍然给出“duplicate class”错误,并且“maven-jar-plugin”块。