You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Roland Huss (JIRA)" <ji...@apache.org> on 2016/05/31 07:25:12 UTC

[jira] [Commented] (MNG-2715) Maven does not comply to XML rules regarding prefixes.

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

Roland Huss commented on MNG-2715:
----------------------------------

Sorry to revive this old issue, but unfortunately it seems that I'm not allowed to create new issues ;(

I still have this very same problem with

{code}
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.4", arch: "x86_64", family: "mac"
{code}

When I use this pom.xml in order to allow an XSD for my custom plugin configuration:

{code:xml}
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/POM/4.0.0">

....
    <plugin>
         ....
         <m:configuration xmlns:m="http://maven.apache.org/POM/4.0.0" xmlns="http://fabric8.io/fabric8-maven-plugin">
             <myConfig>.....</myConfig>
         </m:configuration>
    </plugin>
    ....
</project>
{code}

I get this error:

{code}
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Malformed POM /Users/roland/Development/docker/docker-maven-plugin/samples/data-jolokia-demo/pom.xml: Unrecognised tag: 'm:configuration' (position: START_TAG seen ...che.org/POM/4.0.0" xmlns="http://fabric8.io/fabric8-maven-plugin">... @91:117)  @ /Users/roland/Development/docker/docker-maven-plugin/samples/data-jolokia-demo/pom.xml, line 91, column 117
 @
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project io.fabric8:docker-jolokia-demo:0.15-SNAPSHOT (/Users/roland/Development/docker/docker-maven-plugin/samples/data-jolokia-demo/pom.xml) has 1 error
[ERROR]     Malformed POM /Users/roland/Development/docker/docker-maven-plugin/samples/data-jolokia-demo/pom.xml: Unrecognised tag: 'm:configuration' (position: START_TAG seen ...che.org/POM/4.0.0" xmlns="http://fabric8.io/fabric8-maven-plugin">... @91:117)  @ /Users/roland/Development/docker/docker-maven-plugin/samples/data-jolokia-demo/pom.xml, line 91, column 117 -> [Help 2]
{code}

Except for https://cwiki.apache.org/confluence/display/MAVEN/Moving+forward+with+the+POM+data+model I couldn't find any statement when namespaces are supported or tolerated. Are there any plans for this (and maybe also to relax the schema constraints on the {{<configuration>}} tag  ?

> Maven does not comply to XML rules regarding prefixes.
> ------------------------------------------------------
>
>                 Key: MNG-2715
>                 URL: https://issues.apache.org/jira/browse/MNG-2715
>             Project: Maven
>          Issue Type: Bug
>          Components: POM
>         Environment: Ubuntu 6.10
> Maven 2.0.4
>            Reporter: Seva Safris
>            Priority: Critical
>
> I am new to Maven and have been trying to learn how to create a simple project.
> Let me walk through my scenario of creating a pom.xml file:
> 1. I bind the {http://maven.apache.org/POM/4.0.0} namespace (defined at "http://maven.apache.org/maven-v4_0_0.xsd") to Java classes using an XML Binding solution.
> 2. I use the bound classes to create a simple <project/> as one would expect to see in a pom.xml file.
> 3. I marshal the bound Java objects into xml and write it into pom.xml. Here is the xml I use:
> <ns1:project
> 	xmlns:ns1="http://maven.apache.org/POM/4.0.0">
> 	<ns1:modelVersion>4.0.0</ns1:modelVersion>
> 	<ns1:groupId>com.myapp</ns1:groupId>
> 	<ns1:artifactId>sample-project</ns1:artifactId>
> 	<ns1:name>Sample Maven Project</ns1:name>
> 	<ns1:version>1.0</ns1:version>
> 	<ns1:developers>
> 		<ns1:developer>
> 			<ns1:id>ssafris</ns1:id>
> 			<ns1:name>Seva Safris</ns1:name>
> 		</ns1:developer>
> 	</ns1:developers>
> 	<ns1:build>
> 		<ns1:sourceDirectory>${basedir}/src/java</ns1:sourceDirectory>
> 	</ns1:build>
> </ns1:project>
> 4. I run mvn, and am promptly given a "Not a v4.0.0 POM." exception.
> Tracing through Maven's source, I went to the exact location of the exception in DefaultMavenProjectBuilder.java. On line 1297 it has:
> if ( modelSource.indexOf( "<modelVersion>4.0.0" ) < 0 )
> {
>     throw new InvalidProjectModelException( projectId, pomLocation, "Not a v4.0.0 POM." );
> }
> Since modelSource is checked explicitly for <modelVersion[...], my <project/> xml as shown above will fail this test because it has: <ns1:modelVersion[...].
> This is most definitely a bug in Maven and should be fixed as soon as possible. The workaround is to use a xmlns="http://maven.apache.org/POM/4.0.0" and define all elements without a prefix. However, my use of xmlns:ns1="http://maven.apache.org/POM/4.0.0" should not break Maven as it is not merely legal by xml conventions, but is also a better practice for xml documents.
> I hope you see the importance of getting this bug fixed: My use of a XML Binding solution to bind Maven's xml to Java allows me a strongly-typed level of indirection that will deterministically create proper xml that will validate successfully. If this bug is not fixed, then this level of indirection is not possible (or very very very difficult because the XML Binding solution would have to be hacked to use the xmlns="[...]" convention). I have only found this one instance of where the bug is obvious, but perhaps there are more locations in Maven where the same kind of error can occur.
> Thank you for your time, and I hope you consider this issue as seriously as I do.
> Sincerely,
> Seva Safris



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