まず、Maven 1.x の Web サイトによると、maven 1.x の現在の安定版リリースはバージョン 1.4 ではなく、バージョン 1.1 です。次に、AntRun プラグイン バージョン 1.7 はなく、私の知る限り、これは Maven 2 プラグインです。3 番目に、使用している構文は、やはり Maven 2 に関する属性の使用と非常によく似ているようです。
したがって、何かが欠けている可能性がありますが、これは非常に紛らわしいため、質問でこれらの点を明確にする必要があります。
とにかく、Maven 1について明示的に言及したように、私は答えようとします。よく覚えていれば、カスタム目標を作成して Jelly のcore:if
orを使用していましたcore:when
。これを行うには、次のようなものを に提供しますmaven.xml
。
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant">
<goal name="my-goal">
<j:if test="${environment == 'PROD'}">
<ant:xxx .../>
</j:if>
</goal>
</project>
構文がよくわかりません。この Maven 1 のものはすべて遠すぎて、テストしませんでした (Maven 1 をインストールするのが面倒です)。しかし、私はあなたがそうするだろうと思います。スクリプト リファレンスが役立つ場合があります。
正直なところ、Maven 2.x よりも Maven 1.x を好む正当な理由があることを願っています :)
更新: OP が実際に Maven 2 を使用しているように見えるので、それに応じて質問を更新します。if
目的の動作を実装するには、以下に示すようにAnt-contrib のタスクを使用できます。
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"
classpathref="maven.plugin.classpath" />
<if>
<equals arg1="${foo}" arg2="bar" />
<then>
<echo message="The value of property foo is bar" />
</then>
<else>
<echo message="The value of property foo is not bar" />
</else>
</if>
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
そして、呼び出しますmvn compile -Dfoo=bar
(これは単なる例です)。
しかし、これはすべて、物事を行うための「Maven 方法」ではありません。あなたがやろうとしていることを少しよく理解したので(ただし、最終的な目標を説明していないので完全ではありません)、ビルドプロファイルを使用する方が適切だと思います。あなた自身の答えを読んで、物事を複雑にしすぎています (そして、あなたは間違った道を進んでいます)。
あなたが Maven の初心者であることは理解していますが、Ant に頼るのではなく、Maven を使用することをお勧めします。また、質問を開くときは、特定の解決策を尋ねるのではなく、一般的な問題を説明する方が適切な回答が得られます。ここでは、あなたが実際に達成しようとしていることがわからないため、これ以上のガイダンスを提供することはできません.