[ 
https://issues.apache.org/jira/browse/CXF-6420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Panagiotidis updated CXF-6420:
--------------------------------------
    Description: 
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/%[email protected]%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 overwrites in the local repository the 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.MyService.wsdl
[INFO] Installing 
C:\test-cxf-with-deploy-plugin\target\generated\wsdl\XMLService.wsdl to 
C:\m3-repository\ch\apanag\test-cxf-with-deploy-plugin\1.0\test-cxf-with-deploy-plugin-1.0.XMLService.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}



  was:
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/%[email protected]%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 overwrites in the local repository the WSDL file, 
instead of generating once for each execution. 
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}




> 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/%[email protected]%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 overwrites in the local repository the 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.MyService.wsdl
> [INFO] Installing 
> C:\test-cxf-with-deploy-plugin\target\generated\wsdl\XMLService.wsdl to 
> C:\m3-repository\ch\apanag\test-cxf-with-deploy-plugin\1.0\test-cxf-with-deploy-plugin-1.0.XMLService.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)

Reply via email to