Search code examples
maven-2jax-wswsimport

How to create folder for generated sources in Maven?


I have to generate sources using wsimport and i assume that it should go to /target/generated-sources/wsimport rather than /src/main/java.

The problem is that wsimport needs target folder created before execution and it fails. Can I create that dir first using any maven plugin. I can do it using ant but i prefer to keep it in POM.


Solution

  • I have to generate sources using wsimport and i assume that it should go to /target/generated-sources/wsimport rather than /src/main/java.

    This is a correct assumption.

    The problem is that wsimport needs target folder created before execution and it fails. Can I create that dir first using any maven plugin. I can do it using ant but i prefer to keep it in POM.

    I never noticed this problem (and would consider it as a bug, a plugin has to take care of such things).

    The weird part is that WsImportMojo seems to do what is has to by calling File#mkdirs():

    public void execute()
        throws MojoExecutionException
    {
    
        // Need to build a URLClassloader since Maven removed it form the chain
        ClassLoader parent = this.getClass().getClassLoader();
        String originalSystemClasspath = this.initClassLoader( parent );
    
        try
        {
    
            sourceDestDir.mkdirs();
            getDestDir().mkdirs();
            File[] wsdls = getWSDLFiles();
            if(wsdls.length == 0 && (wsdlUrls == null || wsdlUrls.size() ==0)){
                getLog().info( "No WSDLs are found to process, Specify atleast one of the following parameters: wsdlFiles, wsdlDirectory or wsdlUrls.");
                return;
            }
            ...
         }
         ...
    }

    Could you show how you invoke the plugin and its configuration?