cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Panagiotidis (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6420) Maven cxf-java2ws-plugin copies to the maven repository only the last wsdl of multiple services/executions - overwrites the others
Date Fri, 22 May 2015 17:59:17 GMT

    [ https://issues.apache.org/jira/browse/CXF-6420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14556519#comment-14556519
] 

Andreas Panagiotidis commented on CXF-6420:
-------------------------------------------

I have downloaded the plugin and I have prepared a code fix, which is rather simple.

In the Java2WSMojo class, line ~440
{code}
        // Attach the generated wsdl file to the artifacts that get deployed
        // with the enclosing project
        if (attachWsdl && outputFile != null) {
            File wsdlFile = new File(outputFile);
            if (wsdlFile.exists()) {
                if (classifier != null) {
                    projectHelper.attachArtifact(project, "wsdl", classifier, wsdlFile);
                } else {
                    projectHelper.attachArtifact(project, "wsdl", wsdlFile);
                }
                
            }
        } 
{code}

Replace with the following.

{code}
            if (wsdlFile.exists()) {
                if (classifier != null) {
                    projectHelper.attachArtifact(project, wsdlFile.getName(), classifier,
wsdlFile);
                } else {
                    projectHelper.attachArtifact(project, wsdlFile.getName(), wsdlFile);
                }                
            }
{code}

If the responsible(s) of the project agree with the fix, I would very much like to commit
the change. 

> Maven cxf-java2ws-plugin copies to the maven repository only the last wsdl of multiple
services/executions - overwrites the others
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-6420
>                 URL: https://issues.apache.org/jira/browse/CXF-6420
>             Project: CXF
>          Issue Type: Improvement
>          Components: Build system
>    Affects Versions: 3.1.0
>         Environment: in all environments, version
>            Reporter: Andreas Panagiotidis
>              Labels: easyfix
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> I use the Maven *cxf-java2ws-plugin* to generate WSDLs from @WebService annotated Java
classes. 
> For each Service, we have to create an execution in the plugin, according to this link
http://mail-archives.apache.org/mod_mbox/cxf-users/201003.mbox/%3C201003132152.22957.dkulp@apache.org%3E
. I also did not find another possibility.
> By default in the latest version of cxf-java2ws-plugin the configuration parameter "attachWsdl"
is true. 
> That means that the plugin generates a WSDL for *each* execution. Unfortunately, the
plugin during the maven install phase copies each generated WSDL to the local repository to
the directory:
> {code}
> maven-local-repository\[groupId]\[version]\[artifactId]-[version].wsdl
> {code}
> The naming of the file is the reason that maven does not copy to a local all the WSDLs
. Only the one of the last execution of  the plugin get's copied. Maven overwrites the previous.

> Equally important, Maven version 3.3.3 does not allow to release the Maven project. (Maven
3.0.5 had a different process)
> The maven deploy plugin during the release uploads to the enterprise repository the first
generated WSDL successfully. But then it goes to upload the WSDL from second execution, but
that already exists in the Maven Enterprise Repository. Thus, the project cannot upload the
WSDLs. 
> We may set the attachWsdl option to false, but this is not a solution, as for some the
goal is to *deploy* the WSDL files.
> I attach a zip with a maven project that demonstrates the issue. 
> You see that the plugin copies in the local repository only the last WSDL file, instead
of generating once for each execution. 
> {code}
> [INFO] 
> [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ test-cxf-with-deploy-plugin
---
> [INFO] Installing C:\test-cxf-with-deploy-plugin\target\test-cxf-with-deploy-plugin-1.0.jar
to C:\\m3-repository\ch\apanag\test-cxf-with-deploy-plugin\1.0\test-cxf-with-deploy-plugin-1.0.jar
> [INFO] Installing C:\test-cxf-with-deploy-plugin\pom.xml to C:\eplatform\lib\m3-repository\ch\apanag\test-cxf-with-deploy-plugin\1.0\test-cxf-with-deploy-plugin-1.0.pom
> [INFO] Installing C:\test-cxf-with-deploy-plugin\target\generated\wsdl\MyService.wsdl
to C:\m3-repository\ch\apanag\test-cxf-with-deploy-plugin\1.0\test-cxf-with-deploy-plugin-1.0.wsdl
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> {code}
> Deploying a release version to a Maven Enterprise Repository throws an HTML 400 error,
as normally a release repository does not allow the redeployment of file.
> In the end of the day, the plugin does not allow to copy to a repository each WSDL. This
is against to what it promotes and what its goal was. 
> A simple change is the solution. Add in the name of each generated WSDL the name of the
Service that it represents too. 
> {code}
> maven-local-repository\[groupId]\[version]\[artifactId]-[version].[service-name].wsdl
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message