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

Grzegorz Grzybek edited comment on CXF-5215 at 9/27/13 8:29 AM:
----------------------------------------------------------------

The problem is in 
{{org.apache.cxf.maven_plugin.AbstractCodegenMoho.checkResources()}} method, in 
this fragment:
{code:java}
  genroot = getGeneratedTestRoot();
  if (genroot != null) {
      List<Resource> resources = project.getBuild().getTestResources();
      for (Resource r : resources) {
          File d = new File(root, r.getDirectory());
          if (d.equals(genroot)) {
              testRoot = r;
          } 
      }
      Resource r2 = scanForResources(genroot, testRoot);
      if (r2 != testRoot) {
          r2.setDirectory(getGeneratedTestRoot().getAbsolutePath());
          r2.setTargetPath(project.getBuild().getTestOutputDirectory());
          project.addTestResource(r2);
      }
  }
{code}

{{r2.setTargetPath(project.getBuild().getTestOutputDirectory());}} is wrong, 
because JavaDoc for {{org.apache.maven.model.Resource.setTargetPath(String)}} 
says:
{noformat}
... The path is relative to the target/classes directory ...
{noformat}
(for test resources, the path is related to "target/test-classes" directory).

Setting the target path to {{project.getBuild().getTestOutputDirectory()}} (in 
my case: 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes")
 leads (much) later to the following (in maven-eclipse-plugin):
{code:java}
if ( !StringUtils.isEmpty( resource.getTargetPath() ) )
{
   outputFile = new File( 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes",
 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes"
 )
   ...
{code}

and the resulting {{outputFile}} is a concatenation of two absolute paths.

Here's the patch:
{noformat}
$ git diff --cached
diff --git 
a/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
 
b/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
index 981185f..71afd8d 100644
--- 
a/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
+++ 
b/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
@@ -356,7 +356,6 @@ public abstract class AbstractCodegenMoho extends 
AbstractMojo {
             Resource r2 = scanForResources(genroot, sourceRoot);
             if (r2 != sourceRoot) {
                 r2.setDirectory(getGeneratedSourceRoot().getAbsolutePath());
-                r2.setTargetPath(project.getBuild().getOutputDirectory());
                 project.addResource(r2);
             }
         }
@@ -372,7 +371,6 @@ public abstract class AbstractCodegenMoho extends 
AbstractMojo {
             Resource r2 = scanForResources(genroot, testRoot);
             if (r2 != testRoot) {
                 r2.setDirectory(getGeneratedTestRoot().getAbsolutePath());
-                r2.setTargetPath(project.getBuild().getTestOutputDirectory());
                 project.addTestResource(r2);
             }
         }
{noformat}

adding resource as testResource already declares it to be outputted in 
TestOutputDirectory.

regards
Grzegorz Grzybek
                
      was (Author: gzres):
    The problem is in 
{{org.apache.cxf.maven_plugin.AbstractCodegenMoho.checkResources()}} method, in 
this fragment:
{code:java}
  genroot = getGeneratedTestRoot();
  if (genroot != null) {
      List<Resource> resources = project.getBuild().getTestResources();
      for (Resource r : resources) {
          File d = new File(root, r.getDirectory());
          if (d.equals(genroot)) {
              testRoot = r;
          } 
      }
      Resource r2 = scanForResources(genroot, testRoot);
      if (r2 != testRoot) {
          r2.setDirectory(getGeneratedTestRoot().getAbsolutePath());
          r2.setTargetPath(project.getBuild().getTestOutputDirectory());
          project.addTestResource(r2);
      }
  }
{code}

{{r2.setTargetPath(project.getBuild().getTestOutputDirectory());}} is wrong, 
because JavaDoc for {{org.apache.maven.model.Resource.setTargetPath(String)}} 
says:
{noformat}
... The path is relative to the target/classes directory ...
{noformat}
(for test resources, the path is related to "target/test-classes" directory).

Setting the target path to {{project.getBuild().getTestOutputDirectory()}} (in 
my case: 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes")
 leads (much) later to the following (in maven-eclipse-plugin):
{code:java}
if ( !StringUtils.isEmpty( resource.getTargetPath() ) )
{
   outputFile = new File( 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes",
 
"C:\Dev\Git\projects-github-grgrzybek\cxf\systests\databinding\target\test-classes"
 )
   ...
{code}

and the resulting {{outputFile}} is a concatenation of two absolute paths.

Here's the patch:
{noformat}
diff --git 
a/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
 
b/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
index 981185f..f75c63b 100644
--- 
a/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
+++ 
b/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractCodegenMoho.java
@@ -372,7 +372,6 @@ public abstract class AbstractCodegenMoho extends 
AbstractMojo {
             Resource r2 = scanForResources(genroot, testRoot);
             if (r2 != testRoot) {
                 r2.setDirectory(getGeneratedTestRoot().getAbsolutePath());
-                r2.setTargetPath(project.getBuild().getTestOutputDirectory());
                 project.addTestResource(r2);
             }
         }
{noformat}

adding resource as testResource already declares it to be outputted in 
TestOutputDirectory.

regards
Grzegorz Grzybek
                  
> -Psetup.eclipse fails on Windows
> --------------------------------
>
>                 Key: CXF-5215
>                 URL: https://issues.apache.org/jira/browse/CXF-5215
>             Project: CXF
>          Issue Type: Bug
>          Components: Build system
>    Affects Versions: 2.7.7
>            Reporter: Thorsten Hoeger
>         Attachments: maven_log.txt
>
>
> Building the repository with -Psetup.eclipse failes in systest-databinding

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to