2013-10-15 4 views
1

Что является самым простым способом форматирования одного файла XML с помощью maven i.e. Я ищу плагин maven, который делает XML-файл доступным для чтения. Я пробовал http://code.google.com/p/xml-formatter/, но по какой-то причине я изо всех сил стараюсь это сделать, а также я думаю, что что-то вроде этого будет частью плагина, который уже находится на Maven Central, или я ошибаюсь? Может быть, муравьиная задача, на которую я могу делегировать?XML-форматирующий плагин для maven

Edit:

Если теперь пытался https://github.com/benalexau/xml-formatter, который, кажется, последнюю версию XML-форматировщиком плагин уже упоминалось выше. Я получил это работает, развернув его на мой локальный репозиторий связующей, используя следующий метод:

  • Загрузили ZIP файл из https://github.com/benalexau/xml-formatter
  • экстрагирован .jar и .pom файлы в zip: // релизы/орг/technicalsoftwareconfiurationmanagement/Maven-плагин/ИКНМ-Maven-плагин/номер-версия/
  • Выгрузка плагин к моей связующей репо, используя следующую команду Maven (на Linux):
     
    mvn deploy:deploy-file \ 
    -Durl="http://my/nexus/repo" \ 
    -DrepositoryId="3rd party" \ 
    -Dfile=tscm-maven-plugin-2.1.0.20111230154050.jar \ 
    -Dpackaging=maven-plugin \ 
    -DpomFile=tscm-maven-plugin-2.1.0.20111230154050.pom 
    
  • Добавление следующего к моему проекту П файл:
    <plugin> 
        <groupId>org.technicalsoftwareconfigurationmanagement.maven-plugin</groupId> 
        <artifactId>tscm-maven-plugin</artifactId> 
        <version>2.1.0.20111230154050</version> 
        <configuration> 
        <includes> 
         <include>my-xml-file.xml</include> 
        </includes> 
        <excludes> 
         <exclude>/target/</exclude> 
        </excludes> 
        </configuration> 
        <executions> 
        <execution> 
         <phase>test</phase> 
         <goals> 
          <goal>xmlFormatter</goal> 
         </goals> 
        </execution> 
        </executions> 
    </plugin>
  • Запуск
     
    mvn tscm:xmlFormatter 
    

Однако ... это, кажется, сломать мой файл soap-ui XML, заменив "<" и ">" в секциях CDATA с & ЛТ; и &ampgt; т. е. плагин не работает в более сложных случаях использования.

+0

Пожалуйста, что вы попробовать и как это не работает для вас? –

+0

Sander. Вероятно, недостаток знаний на maven на моей стороне. Я загрузил флажок подключаемого модуля, добавил необходимые записи в мой файл pom, как описано в http://code.google.com/p/xml-formatter/wiki/Documentation, и установил плагин в моем репозитории nexus, но когда выполняя цель форматирования, я получаю сообщение об ошибке, в основном говорящее, что maven не может найти плагин, связанный с этой командой. –

+0

Поскольку дьяволы находятся в деталях, я по-прежнему предлагаю вам предоставить такие детали, как любые изменения POM, которые вы сделали для своего проекта, или командную строку с вызовом плагина, а затем реальный вывод от Maven. –

ответ

0

Используйте XML-Maven-плагин, проверить его на http://mojo.codehaus.org/xml-maven-plugin/transformation.html

Вы можете применить XSLT преобразования для файлов XML с помощью XSL: стилей и XSL: преобразование

<stylesheet>src/main/stylesheet.xsl</stylesheet> 
+0

Это не работает слишком хорошо, потому что выход будет в другом месте, а не на месте. –

2

Вы можете адаптировать мой cleanpom-maven-plugin, чтобы сделать то, что вам нужно, хотя на данный момент оно не предназначено для этого, но вы можете делать очистку на месте. Я только что создал единичный тест, который покажет это.

Вы должны иметь XSLT, который будет делать вашу уборку и положить в внутри META-INF файла JAR

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xalan="http://xml.apache.org/xslt" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <xsl:output method="xml" indent="yes" encoding="UTF-8" 
       xalan:indent-amount="4" /> 
    <xsl:strip-space elements="*" /> 

<!-- default copy --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()" /> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="/"> 
    <xsl:text>&#xa;</xsl:text> 
    <xsl:if test="comment()"> 
     <xsl:apply-templates select="comment()" /> 
     <xsl:text>&#xa;</xsl:text> 
    </xsl:if> 
    <xsl:apply-templates select="*" /> 
</xsl:template> 
</xsl:stylesheet> 

Затем добавьте следующий плагин

<plugin> 
<groupId>net.trajano.mojo</groupId> 
<artifactId>cleanpom-maven-plugin</artifactId> 
<version>1.0.6</version> 
<executions> 
    <execution> 
     <id>clean-web-xml</id> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
      <pomFile>src/main/webapp/WEB-INF/web.xml</pomFile> 
      <xsltFileList>clean.xslt</xsltFileList> 
     </configuration> 
    </execution> 
</executions> 
<dependencies> 
    <dependency> 
     <groupId>group</groupId> 
     <artifactId>cleanxslt</artifactId> 
    </dependency> 
</dependencies> 

Любопытное kludgey, возможно, я буду создавать один конкретный для этого случая использования в будущем, поскольку Eclipse не позволяет устанавливать стиль кода XML при сохранении на уровне проекта.

0

Используйте xml-format-maven-plugin, который можно приобрести у Maven Central и documented here. Текущая версия правильно обрабатывает сложные файлы XML, включая CDATA.

(отказ от ответственности: я являюсь автором xml-formatter упоминается оригинальным вопрошающего, а также xml-format-maven-plugin преемник)

Смежные вопросы