2

我需要替换构建后生成的.wsdd文件中的多行。warmaven

我正在使用antrun-maven-pluginant's replace task为此目的。

以下是来自的片段pom.xml

<plugin>
   <groupId>com.github.odavid.maven.plugins</groupId>
   <artifactId>antrun-maven-plugin</artifactId>
   <executions>
    <execution>
     <phase>package</phase>
      <configuration>
       <target>
        <ant antfile="replace.xml">
         <target name="replace-config"/>    
        </ant>
       </target>
      </configuration>
     <goals>
      <goal>run</goal>
     </goals>
    </execution>
   </executions></plugin>

这里的replace.xmlcontainsant目标实际上替换了多行标记并war用替换的.wsdd文件更新 final,下面是我们替换.wsdd文件中的多行标记的部分。

<target name ="replace-config">
<echo>********** Replacing tokens in server-config.wsdd file *************</echo>
<replace dir="${basedir}/target/as_gen/WEB-INF/" >
    <include name="server-config.wsdd"/>
    <replacetoken><![CDATA[<requestFlow>      
                             <handler type="java:org.apache.axis.handlers.JWSHandler">        
                                 <parameter name="scope" value="session"/>      
                             </handler>      
                             <handler type="java:org.apache.axis.handlers.JWSHandler">        
                                <parameter name="scope" value="request"/>        
                                <parameter name="extension" value=".jwr"/>      
                             </handler>    
                    </requestFlow>]]></replacetoken>
    <replacevalue><![CDATA[<requestFlow>      
                               <handler type="java:com.as.webservices.TS9TicketTokenSender">        
                                 <parameter name="scope" value="session"/>      
                               </handler>      
                                <handler name="_wss4j_as_receiver_handler" type="java:com.as.security.asWSSReceiverHandler">        
                                    <parameter name="action" value="NoSecurity"/>      
                                </handler>    
                                <handler type="java:com.cm.ChangeHandler"/>
                                <handler type="java:com.cm.WSLoggingHandler"/>
                         </requestFlow>
                         <responseFlow>      
                         <handler type="java:com.as.webservices.TS9TicketTokenSender"/>      
                         <handler name="_wss4j_as_sender_handler" type="java:com.as.security.asWSSSenderHandler">        
                            <parameter name="signatureKeyIdentifier" value="IssuerSerial"/>        
                         <parameter name="encryptionKeyIdentifier" value="IssuerSerial"/>        
                         <parameter name="action" value="NoSecurity"/>      
                         </handler>    
                         <handler type="java:com.cm.WSLoggingHandler"/>
                        </responseFlow>  
   ]]></replacevalue>
</replace>             

现在这在 unix 机器上运行时给出了正确的结果,并且令牌被替换值成功替换,但不知何故,替换不会发生在我的 Windows 机器上。

请帮助识别问题和替代方法。谢谢。

4

1 回答 1

0

我能够使用蚂蚁的replaceregexp任务来做到这一点。识别<requestFlow>....</requestFlow>in属性之间的第一个内容,并在任务的属性中match添加替换值replacereplaceregexp

于 2018-07-06T07:20:37.793 回答