2013-12-12 64 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> 

後,我跑: MVN發佈:清潔 MVN發佈:準備 MVN發佈:執行

所以我必須手動將xml文件中的.jar和.war版本更改爲3.1.2。

有一種方法可以告訴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設置爲範圍**提供**到不同的模塊中,這將導致不將該文件打包到所產生的war,ear文件中。 – khmarbaise

回答

4

這樣做的一個好辦法,就是讓行家採取生成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> 

或者,也可以通過specifying the module filename生成的版本更少嵌入式模塊的EAR:

其中
 <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的情況下過濾器複製。每個子部署名稱將與maven-ear-plugin配置中使用的bundleFileName匹配。

相關問題