2013-02-22 55 views
0

目前運行與Maven的一個奇怪的問題,建立一個正在調用的螞蟻,在父POM定義以下屬性: -Maven的不及格被覆蓋的屬性,以螞蟻

<jboss.home>${env.JBOSS_HOME}</jboss.home> 

我想當我運行Maven時,通過傳入-Djboss.home來覆蓋此內容。

此版本包含當激活調用Ant構建配置文件: -

<ant antfile="build.xml" inheritRefs="true"> 
    <target name="all"/> 
</ant> 

Ant腳本使用屬性: -

<property name="jboss.dir" value="${jboss.home}"/> 

的隨後將其輸出: -

<echo message="jboss dir is: ${jboss.dir}"/> 

問題是它輸出的值是$ {env.JBOSS_HOME}

父pom中的其他屬性我可以從命令行覆蓋。

即使jboss.home屬性在Maven構建中的其他地方使用,似乎也會被覆蓋。

嘗試命令的各種組合後,幾乎看起來,傳遞給Ant的屬性集從命令行的任何覆蓋之前都會從poms中解析出來。如果我設置了JBOSS_HOME環境變量,那麼使用這個變量的所有地方都有正確的值。

是否有我能夠在命令行覆蓋這個變量,並在Ant腳本中使用重寫的值?

+1

我看到了同樣的問題......你有沒有找到解決的辦法?我正在使用Maven 3 – jcampos8782 2014-03-20 00:34:36

回答

1

問題是,${env.JBOSS_HOME}是一個系統環境變量,而您將傳遞給JVM一個系統屬性-Djboss.home=...。這是兩件不同的事情。除此之外,Java世界中的任何變量,參數都是區分大小寫的。

0

你似乎在做所有正確的事情,它適用於我,我已經用2個pom.xml文件做了一個工作示例。父POM看起來是這樣的:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow.test</groupId> 
     <artifactId>test</artifactId> 
     <version>1.0</version> 
    <name>Test</name> 
    <packaging>pom</packaging> 
    <modules> 
     <module>test-ant-properties</module> 
    </modules> 
    <properties> 
     <jboss.home>${env.JBOSS_HOME}</jboss.home> 
    </properties> 
</project> 

然後我在子文件夾中創建一個模塊的pom.xml 測試螞蟻的屬性,看起來像這樣:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.stackoverflow.test</groupId> 
     <artifactId>test</artifactId> 
     <version>1.0</version> 
    </parent> 
    <artifactId>test-ant-properties</artifactId> 
    <name>Test maven ant properties</name> 
    <profiles> 
     <profile> 
      <id>jboss</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.6</version> 
         <executions> 
          <execution> 
           <id>jboss-ant</id> 
           <phase>install</phase> 
           <configuration> 
            <target> 
             <property name="jboss.dir" value="${jboss.home}"/> 
             <echo message="jboss dir is: ${jboss.dir}"/>         
            </target> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

我不已安裝JBOSS所以對於測試目的,我設置environement變量test1234這樣的: set JBOSS_HOME=test1234

當我執行父POM和JBoss輪廓

mvn install -Pjboss 

我得到以下結果:[回波] JBoss的dir是:test1234

當我執行與JBoss的相同的命令。家設置

mvn install -Pjboss -Djboss.home=my_custom_variable 

我得到以下結果:[迴音] JBoss的dir是:my_custom_variable