1

現在、antを呼び出しているMavenビルドで奇妙な問題が発生しています。親pom内で、次のプロパティが定義されています。

<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の他のプロパティは、コマンドラインからオーバーライドできます。

Mavenビルド内の他の場所で使用すると、jboss.homeプロパティでさえオーバーライドされているように見えます。

コマンドのさまざまな組み合わせを試した後、Antに渡されたプロパティのセットは、コマンドラインからオーバーライドする前にpomsから解決されているように見えます。JBOSS_HOME環境変数を設定すると、この変数が使用されるすべての場所に正しい値が設定されます。

コマンドラインでこの変数をオーバーライドし、Antスクリプトでオーバーライドされた値を使用できるようにするために欠けているものはありますか?

4

3 に答える 3

1

問題は、それ${env.JBOSS_HOME}がシステム環境変数であり、代わりに JVM にシステム プロパティを渡していることです-Djboss.home=...。これらは2つの異なるものです。それとは別に、Java の世界の変数、引数などは大文字と小文字が区別されます。

于 2013-02-22T14:47:56.837 に答える
0

あなたはすべて正しいことをしているようです、それは私にとってはうまくいきます.2つの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>
    <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 をサブフォルダーtest-ant-propertiesに作成しました。

<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 がインストールされていないため、テスト目的で環境変数を次のように test1234 に設定します。 set JBOSS_HOME=test1234

jboss プロファイルで親 pom を実行すると

mvn install -Pjboss

次の結果が得られます: [echo] jboss dir is: test1234

jboss.home設定で同じコマンドを実行すると

mvn install -Pjboss -Djboss.home=my_custom_variable

次の結果が得られます: [echo] jboss dir is: my_custom_variable

于 2013-02-22T16:10:41.567 に答える