[ https://issues.apache.org/jira/browse/FELIX-4999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carsten Ziegeler closed FELIX-4999. ----------------------------------- > maven-scr-plugin messes project resources when outputDirectory configuration > present on windows > ----------------------------------------------------------------------------------------------- > > Key: FELIX-4999 > URL: https://issues.apache.org/jira/browse/FELIX-4999 > Project: Felix > Issue Type: Bug > Components: SCR Tooling > Affects Versions: maven-scr-plugin 1.21.0 > Environment: Windows > Reporter: Philipp Kunz > Assignee: Carsten Ziegeler > Labels: easyfix, patch-available > Fix For: maven-scr-plugin 1.22.0 > > Attachments: FELIX-4999.patch > > > As I look at the following code, I easily can conclude problems on Windows. > {code:title=org.apache.felix.scrplugin.mojo.SCRDescriptorMojo#updateProjectResources()} > private boolean updateProjectResources() { > final String classesDir = > this.project.getBuild().getOutputDirectory().replace(File.separatorChar, '/'); > final String ourRsrcPath = > this.outputDirectory.getAbsolutePath().replace(File.separatorChar, '/'); > if ( !classesDir.equals(ourRsrcPath) ) { > // now add the descriptor directory to the maven resources > boolean found = false; > @SuppressWarnings("unchecked") > final Iterator<Resource> rsrcIterator = > this.project.getResources().iterator(); > while (!found && rsrcIterator.hasNext()) { > final Resource rsrc = rsrcIterator.next(); > found = rsrc.getDirectory().equals(ourRsrcPath); > } > if (!found) { > final Resource resource = new Resource(); > resource.setDirectory(this.outputDirectory.getAbsolutePath()); > this.project.addResource(resource); > } > return true; > } > return false; > } > {code} > The problematic snippet is *{{.replace(File.separatorChar, '/')}}*. On any > other environment that Windows this might work but it does not work with > backslash file separators. > At first *{{classesDir}}* is compared to *{{ourRsrcPath}}* which is correct > as both values have their slashes replaced. The second comparison on line > [545|http://svn.apache.org/viewvc/felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java?view=markup&revision=1616419], > however, is invalid because *{{rsrc.getDirectory()}}* contains native file > separators when compared to *{{ourRsrcPath}}* with replaced file separators. > As a consequence, the outputDirecory becomes (is added as a) maven project > resource and everything inside it if previously existing is copied into the > target directory. In my case I specified the project root directory as > outputDirectory so that Eclipse PDE finds the OSGI-INF folder in the place > expected and added the root folder with an inclusion pattern of OSGI-INF/** > to the project resources. The issue caused the whole project to get copied > into the target/classes folder resulting in something like > target/classes/target/classes, which maven-bundle-plugin is then complaining > with an error because: > {code} > [ERROR] ... : Classes found in the wrong directory: > {target/classes/target/clases/...=...} > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)