我对maven很新。我正在使用wsdl2java来获取Java文件,然后创建我需要的jar文件。问题是我的网址来自不同的来源,最终我需要有4个不同的jar文件。
到目前为止,我尝试创建前两个jar文件,然后处理接下来的两个...所以我创建了两个不同的"执行" " build"块;每个"执行"块下载每个自己的wsdl文件,到目前为止一直很好。以下插件:
org.codehaus.mojo axistools-行家-插件
以这种方式工作:它首先编译所有生成的Java文件,然后从所有文件中生成jar文件,这意味着它只创建一个jar文件。
无论如何,我要求wsdl2java编译,然后在每次"执行"之后立即创建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>
由于评论时间过长,我不得不编辑我原来的帖子......
感谢您的回复。我确实试过你的解决方案。如你所知,&#34; axistools-maven-plugin&#34;有#&#34; maven-compiler-plugin&#34;和#34; maven-jar-plugin&#34;内置。它首先从指定的URL下载所有wsdl文件。它创建不同的输出目录;但是,在编译阶段,它会尝试一次编译所有输出目录中的所有Java文件;因为有一些普通的Java文件。这些wsdl文件,它给出了&#34;重复的类&#34;编译时出错。
我们可以定义自己的自定义&#34; maven-compiler-plugin&#34;和&#34; maven-jar-plugin&#34;阻止并添加&#34; include&#34;或&#34;排除&#34;让maven知道要编译哪些文件以及如何创建jar文件的块,但是因为&#34; axistools-maven-plugin&#34;运行自己的&#34; maven-compiler-plugin&#34;首先,它尝试首先编译所有Java文件,然后仍然提供&#34;重复的类&#34;错误之前它会查看我们的&#34; maven-compiler-plugin&#34;和&#34; maven-jar-plugin&#34;块。
答案 0 :(得分:0)
一个想法:为每个axistools插件执行定义<outputDirectory>
,例如“classesProd”和“classesSandbox”。
然后使用maven-jar-plugin
的多个执行来从这些文件构建jar。每个jar插件执行都会指定一个<classesDirectory>
,对应于axistools执行的<outputDirectory>
。您可能希望定义<classifier>
或更改jar执行的<outputDirectory>
,以便第二个jar不会覆盖第一个jar。
答案 1 :(得分:0)
通过将nsExcludes添加到wsdl2java的配置部分,我能够绕过创建重复的java类。
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<nsExcludes>
<nsExclude>http://lang.java</nsExclude>
<nsExclude>http://rmi.java</nsExclude>
</nsExcludes>
...