Po pierwsze, zgodnie ze stroną Maven 1.x, obecna stabilna wersja dla maven 1.x to wersja 1.1, a nie 1.4. Po drugie, nie ma wersji AntRun Plugin 1.7 i, o ile mi wiadomo, jest to wtyczka Maven 2. Po trzecie, składnia, której używasz, wydaje się bardzo podobna do Using Attributes, która znowu dotyczy Mavena 2.
Może brakuje mi czegoś, ale jest to bardzo mylące i powinieneś wyjaśnić te kwestie w swoim pytaniu.
W każdym razie, jak wyraźnie wspomniano o Mavenie 1, spróbuję odpowiedzieć. Jeśli dobrze pamiętam, napisałbym niestandardowy cel i użyłbym Jelly's
core:if
lub
core:when
. Aby to zrobić, zapewnić coś takiego w
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>
ja naprawdę nie jestem pewien składni, to wszystko Maven 1 rzeczy jest po prostu zbyt daleko, a ja nie przetestować go (jestem zbyt leniwy, aby zainstalować Mavena 1). Ale myślę, że tak. Pomocne może być scripting reference.
Szczerze mówiąc, mam nadzieję, że masz dobry powód, aby preferować Maven 1.x ponad Maven 2.x :)
UPDATE: Wydaje się, że PO jest rzeczywiście przy Maven 2, tak ja "Odpowiednio zaktualizuję moje pytanie. W celu realizacji pożądanego zachowania, można użyć Ant-contrib za if
zadanie, jak pokazano poniżej:
<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>
a następnie zadzwonić mvn compile -Dfoo=bar
(to tylko przykład).
Ale to wszystko nie jest "maven way" do robienia rzeczy. Teraz, gdy rozumiem nieco lepiej, co próbujesz zrobić (ale nie do końca tak, jak nie wyjaśniłeś swojego ostatecznego celu), myślę, że bardziej odpowiednie byłoby użycie build profiles i po przeczytaniu twojej własnej odpowiedzi, myślę, że jesteś przez komplikowanie rzeczy (i to, że jesteś na złej drodze).
Rozumiem, że jesteś początkującym Mavenem, ale sugeruję spróbować go użyć, zamiast polegać na Mrówce, inaczej nie uzyskasz korzyści z tego. Ponadto, otwierając pytanie, zamiast pytać o konkretne rozwiązanie, powinieneś raczej wyjaśnić swój ogólny problem, otrzymasz lepsze odpowiedzi. Tutaj nie mogę podać więcej wskazówek, ponieważ nie wiem, co naprawdę chcesz osiągnąć.
Czy możesz po prostu potwierdzasz jak nazywasz maven i przekazujesz parametr? –
Czy widzę poprawnie, że drugie zadanie nie ma nazwy? –