2013-12-12 5 views
4

application.xml файл:Как автоматически обновлять версии в application.xml после выпуска Maven

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6"> 
    <description>DESCRIPTION</description> 
    <display-name>xxxsystem-ear</display-name> 
    <module> 
    <ejb>xxxsystem-ejb-3.1.1-SNAPSHOT.jar</ejb> 
    </module> 
    <module> 
    <web> 
     <web-uri>xxxsystem-web-3.1.1-SNAPSHOT.war</web-uri> 
     <context-root>/xxxsystem</context-root> 
    </web> 
    </module> 
    <library-directory>lib</library-directory> 
</application> 

После я бегу: релиз МВН: чистый релиз МВН: подготовить релиз МВН: выполнить

Поэтому мне нужно вручную изменить версии .jar и .war до 3.1.2 в xml-файле.

Есть ли способ сказать maven изменить версии в этом файле для меня?

я должен сделать то же самое с JBoss-развертывания-structure.xml

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </deployment> 

    <sub-deployment name="xxx-ejb-3.1.1-SNAPSHOT.jar"> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </sub-deployment> 

    <sub-deployment name="xxx-web-3.1.1-SNAPSHOT.war"> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </sub-deployment> 
</jboss-deployment-structure> 

Любые идеи?

+0

Вы вручную пишете application.xml? (Я так полагаю ..) почему бы не позволить maven-ear-plugin генерировать application.xml. – khmarbaise

+0

@khmarbaise работал, спасибо за помощь. Теперь я должен сделать то же самое с jboss-deployment-structure.xml, вы знаете, как это сделать? – Claudinei

+0

Почему бы не установить org.apache.log4j в область ** ** при условии ** в разные модули, что должно привести к тому, что этот файл не будет упакован в итоговый файл войны, уха. – khmarbaise

ответ

4

Один хороший способ сделать это, чтобы Maven позаботиться о создании файла application.xml:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <configuration> 
       <filtering>true</filtering> 
       <version>6</version> 
       <defaultLibBundleDir>lib</defaultLibBundleDir> 
       <modules> 
        <ejbModule> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>xxxsystem-ejb</artifactId> 
        </ejbModule> 
        <webModule> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>xxxsystem-web</artifactId> 
         <contextRoot>/xxxsystem</contextRoot> 
        </webModule> 
       </modules> 
      </configuration> 
     </plugin> 

во-вторых, JBoss развертывания-structure.xml (предполагается, что в SRC/основной/приложения) могут быть получены с filtering включенным в плагин (как показано выше), и это источник изменен:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </deployment> 

    <sub-deployment name="xxxsystem-ejb-${project.version}.jar"> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </sub-deployment> 

    <sub-deployment name="xxxsystem-web-${project.version}.war"> 
     <exclusions> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
    </sub-deployment> 
</jboss-deployment-structure> 

В качестве альтернативы, вы можете создать EAR с версией менее встраиваемых модулей от specifying the module filename:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <configuration> 
       <version>6</version> 
       <defaultLibBundleDir>lib</defaultLibBundleDir> 
       <modules> 
        <ejbModule> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>xxxsystem-ejb</artifactId> 
         <bundleFileName>xxxsystem-ejb.jar</<bundleFileName> 
        </ejbModule> 
        <webModule> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>xxxsystem-web</artifactId> 
         <bundleFileName>xxxsystem-web.war</<bundleFileName> 
         <contextRoot>/xxxsystem</contextRoot> 
        </webModule> 
       </modules> 
      </configuration> 
     </plugin> 

В этом случае фильтр копирование JBOSS-развертывания-structure.xml не требуется. Каждое имя суб-развертывания будет сопоставляться с bundleFileName, используемым в конфигурации maven-ear-plugin.

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