2

XPath を使用して web.xml を Maven 置換プラグインに置き換えようとすると、次のエラーが発生します。

[ERROR] Failed to execute goal com.google.code.maven-replacer-plugin:replacer:1.5.2:replace (default) on project my-project: 
Error during XML replacement: Content is not allowed in prolog. -> [Help 1]

そして、これがMavenコードです

<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>replacer</artifactId> 
    <version>1.5.2</version> 
    <executions>
        <execution>
            <phase>prepare-package</phase> <goals>
                <goal>replace</goal> 
            </goals> 
        </execution> 
    </executions> 
    <configuration>
        <file>src/main/webapp/WEB-INF/web.xml</file>
        <outputFile>target/web.xml</outputFile> 
        <regexFlags>
            <regexFlag>CASE_INSENSITIVE</regexFlag> 
        </regexFlags> 
<replacements> 
    <replacement>
        <xpath>/web-app/display-name</xpath>
        <token>.*</token> 
        <value>${project.name}</value> 
    </replacement> 
</replacements>
</plugin>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     id="my-project"
     version="2.5">

    <display-name>My Project</display-name>
    ...
</web-app>

理由はありますか?

4

3 に答える 3

1

「 http://java.sun.com/xml/ns/javaee 」名前空間を登録し、「javaee」などのプレフィックスを選択し/javaee:web-app/javaee:display-nameて、XPath 式として使用する必要があります。

このリンクによると、プラグインの<configuration>セクションでそれを行うことができます:

<plugin>
    ...

    <configuration>
        <namespaceContexts>
            <javaee>http://java.sun.com/xml/ns/javaee</javaee>
        </namespac‌​eContexts>
        ...
于 2013-09-05T08:58:51.180 に答える