在以下项目结构中:
Parent
- ProjectA
- ProjectB
- etc.
当我从ProjectA
内运行mvn clean install
时, ProjectA
正确构建。
但是,当我从mvn clean install
文件夹运行Parent
时,出现以下错误:
[ERROR] Failed to execute goal org.apache.axis2:axis2-wsdl2code-maven-plugin:1.5.6:wsdl2code
(default) on project ProjectA: Error parsing WSDL:
WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document
at 'target/TcWebService.wsdl'.: java.io.FileNotFoundException:
This file was not found:
file:/D:{PATH_TO_PARENT}/target/TcWebService.wsdl -> [Help 1]
正确的路径为file:/D:{PATH_TO_PARENT}/ProjectA/target/TcWebService.wsdl
。 ProjectA
部分缺失
Parent.pom
<modules>
<module>ProjectA</module>
<module>ProjectB</module>
...
</modules>
ProjectA pom:
<parent>
<groupId>{MY.GROUP.ID}</groupId>
<artifactId>jars</artifactId>
<version>1.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<configuration>
<tasks>
<copy file="src/main/wsdl/TcWebService.wsdl"
tofile="target/TcWebService.wsdl"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
有什么想法吗?
答案 0 :(得分:1)
你可以采用更加专业的方法解决这个问题,这样maven就可以更轻松地按照你的要求去做。
maven-resources-plugin
可以帮到您。
在此处阅读:https://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html
修改强>
我认为这里的问题是工作目录。当您运行子模块时,您位于子项目的目录中。所以childProject\target
适合你。但是,当您运行主项目时,您在父目录中,这不起作用。因此,需要通过在复制任务的file
和tofile
中提供文件的绝对路径来解决此问题。 ${project.basedir}
可能有助于作为您路径的前缀。