我试图在具有单独配置的 maven 插件内有两个执行块,但 maven 似乎忽略了执行块内的配置块,并且只使用执行块之外的配置块。
所以为了缩小问题的范围,我选择了一个工作插件部分并将工作配置稍微向上移动到执行块的内部,然后它停止工作(wsdl 仍在被拾取(实际上两者都是),但这很简单因为它位于默认目录中,所以当配置部分位于执行块内时,正在拾取绑定文件和非其他配置,事实上,它甚至不应该知道第二个 wsdl,因为我没有在任何地方指定它):
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>wsdla</id>
<phase>generate-sources</phase>
<configuration>
<packageName>com.mycee.project.model</packageName>
<sourceDestDir>src/main/java</sourceDestDir>
<wsdlFiles>
<wsdlFile>
${basedir}/src/wsdl/a.wsdl
</wsdlFile>
</wsdlFiles>
<bindingDirectory>
${basedir}/src/wsdl/binding
</bindingDirectory>
<verbose>true</verbose>
</configuration>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
这是我需要解决的 maven 问题还是 jaxws 问题,我该如何解决?
如果我将版本更改为 2.3,则会收到以下错误:
[错误] 无法在项目 mycee-project 上执行目标 org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (default-cli):执行目标 org.jvnet.jax-ws 的 default-cli -commons:jaxws-maven-plugin:2.3:wsimport 失败:字符串索引超出范围:-1 -> [帮助 1]
运行 mvn clean jaxws:wsimport -X 我可以在调试输出中看到它正在使用默认值:
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (default-cli)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<bindingDirectory default-value="${basedir}/src/jaxws"/>
<destDir default-value="${project.build.outputDirectory}"/>
<encoding>${project.build.sourceEncoding}</encoding>
<extension default-value="false"/>
<genJWS default-value="false"/>
<implDestDir default-value="${project.build.sourceDirectory}"/>
<keep default-value="true"/>
<localRepository default-value="${localRepository}"/>
<pluginArtifactMap>${plugin.artifactMap}</pluginArtifactMap>
<quiet default-value="false"/>
<remoteRepositories default-value="${project.pluginArtifactRepositories}"/>
<settings>${settings}</settings>
<sourceDestDir default-value="${project.build.directory}/generated-sources/wsimport"/>
<staleFile default-value="${project.build.directory}/jaxws/stale"/>
<verbose default-value="false"/>
<wsdlDirectory default-value="${basedir}/src/wsdl"/>
<xadditionalHeaders default-value="false"/>
<xdebug default-value="false"/>
<xdisableAuthenticator default-value="false"/>
<xdisableSSLHostnameVerification default-value="false"/>
<xnoAddressingDataBinding default-value="false"/>
<xnocompile default-value="true"/>
<xuseBaseResourceAndURLToLoadWSDL default-value="false"/>
<project default-value="${project}"/>
</configuration>
[DEBUG] =======================================================================
索引超出范围错误的调试输出:
[ERROR] Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (default-cli) on project mycee-project: Execution default-cli of goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport failed: String index out of range: -1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (default-cli) on project mycee-project: Execution default-cli of goal org.jvnet.jax-ws-c
ommons:jaxws-maven-plugin:2.3:wsimport failed: String index out of range: -1
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport failed: String index out of range: -1
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:872)
at java.lang.StringBuilder.substring(StringBuilder.java:72)
at org.jvnet.jax_ws_commons.jaxws.AbstractJaxwsMojo.getCP(AbstractJaxwsMojo.java:484)
at org.jvnet.jax_ws_commons.jaxws.AbstractJaxwsMojo.exec(AbstractJaxwsMojo.java:359)
at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.processLocalWsdlFiles(WsImportMojo.java:319)
at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.execute(WsImportMojo.java:283)
at org.jvnet.jax_ws_commons.jaxws.MainWsImportMojo.execute(MainWsImportMojo.java:50)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 20 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
根据要求完整的pom:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycee</groupId>
<artifactId>mycee-project</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>mycee</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>1.7.2</slf4j.version>
</properties>
<repositories>
</repositories>
<pluginRepositories>
</pluginRepositories>
<dependencies>
<!-- Junit4 Dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- XML Dependencies -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2.7</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.8</version>
</dependency>
<!-- Log Dependencies -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>basic</id>
<phase>generate-sources</phase>
<configuration>
<packageName>com.mycee.project.model</packageName>
<sourceDestDir>src/main/java</sourceDestDir>
<wsdlFiles>
<wsdlFile>
${basedir}/src/wsdl/wsdla.wsdl
</wsdlFile>
</wsdlFiles>
<bindingDirectory>
${basedir}/src/jaxws/binding
</bindingDirectory>
<verbose>true</verbose>
<target>2.1</target>
</configuration>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>