Я хочу автоматизировать добавление объявлений Spring с использованием Maven, т.е. добавления узлов bean к существующему XML-документу.Как добавить новый узел в существующий XML-документ с помощью maven?
Я попытался использовать плагин AntRun с xmltask без успеха: beans.xml дублируется без вставки элемента элемента bean.
Теперь я возвращаюсь к использованию плагина maven XML с преобразованием XSL и по-прежнему не в состоянии выполнить свою задачу с помощью этого решения: beans.xml дублируется без вставки элемента элемента bean.
Ставки на мои недостатки в знаниях об обработке XML, я читал здесь и там, но я не могу понять, что мне не хватает.
Я использую следующий POM декларацию для настройки Maven XML плагин:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${basedir}/src/main/resources/spring</dir>
<excludes>
<exclude>spring-context.xml</exclude>
</excludes>
<stylesheet>${basedir}/templates/xslt/spring-stylesheet.xslt</stylesheet>
</transformationSet>
</transformationSets>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>
И следующая таблица стили, чтобы настроить преобразование XML
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.springframework.org/schema/beans"
version="2.0">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="beans">
<xsl:copy>
<xsl:apply-templates select="@* | *"/>
<xsl:element name="bean"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Я получаю следующий файл (который является точной копией моего исходного документа)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="location" value="classpath:properties/db.properties"/>
</bean>
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
id="dataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
id="sessionFactory">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingLocations">
<value>classpath:hibernate/queries.hbm.xml</value>
</property>
</bean>
<bean class="org.springframework.orm.hibernate4.HibernateTransactionManager"
id="txManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"
id="persistenceExceptionTranslationPostProcessor"/>
</beans>
Может кто-нибудь указать что здесь не так, или предложите другой способ добавления к ресурсу XML с помощью Maven?
Теперь я получаю его сейчас, и он действительно работает, спасибо. – guitaristooexpensive