Как запустить цель муравья из Maven2? - PullRequest
3 голосов
/ 19 октября 2010

Как запустить конкретную цель с помощью плагина antrun из командной строки?

mvn antrun:run не запускает ее.


<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>myExecution</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <ant target="myTarget" inheritRefs="true">
                                    ...
                                </ant>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>

                <dependencies>
                    ...
                </dependencies>
            </plugin>
            ...
        </plugins>
        ...
    </build>
    ...
</project>

Ответы [ 4 ]

7 голосов
/ 20 октября 2010

Как запустить конкретную цель с помощью плагина antrun из командной строки?

Чтобы строго ответить на этот вопрос, вы не можете и не можете.

То, что вы можете сделать, это либо:

1. предоставить плагин уровня configuration

<plugin>
   <artifactId>maven-antrun-plugin</artifactId>
   <configuration>
       ....
   </configuration>
</plugin>

И эта конфигурация будет использоваться при вызове плагина (независимо от того, как вызывается плагин: из cli, часть жизненного цикла).

2. предоставить уровень исполнения configuration (что вы и сделали)

<plugin>
   <artifactId>maven-antrun-plugin</artifactId>
   <executions>
       <execution>
           <id>myExecution</id>
           <phase>deploy</phase>
           <goals>
               <goal>run</goal>
           </goals>
           <configuration>
               <tasks>
                   <ant target="myTarget" inheritRefs="true">
                       ...
                   </ant>
               </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

И затем вызвать фазу, к которой подключен плагин (deploy в данном случае).

3. предоставить уровень исполнения configuration для специального default-cli идентификатора исполнения

<plugin>
   <artifactId>maven-antrun-plugin</artifactId>
   <executions>
       <execution>
           <id>default-cli</id>
           <configuration>
               <tasks>
                   <ant target="myTarget" inheritRefs="true">
                       ...
                   </ant>
               </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

Начиная с Maven 2.2.0 (см. MNG-3401 ), цели, вызываемые непосредственно из командной строки, можно настраивать в POM отдельно от других вызовов плагинов, используя специальный идентификатор выполнения, называемый default-cli. Другими словами, приведенная выше конфигурация будет использоваться только при вызове плагина из командной строки.

Но в любом случае вы не можете вызвать определенный Ant target внутри элемента configuration. Возможно, вы могли бы возиться с профилями, чтобы реализовать что-то подходящее, но, если вы действительно хотите пойти в этом направлении, мой совет будет использовать Ant.

Ссылки

1 голос
/ 20 февраля 2014

Вы можете быть хитрым.

В pom.xml:

...
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <configuration>
        <target>
            <ant target="trampoline" />
        </target>
    </configuration>
</plugin>
...

В build.xml:

...
<target name="trampoline">
    <echo message="Executing target '${mvnAntTarget}'"/>
    <antcall target="${mvnAntTarget}" />
</target>

<target name="testTarget">
    <echo message="Yay, I'm a test target.."/>
</target>
....

А затем, запустив:

$ mvn antrun:run -DmvnAntTarget=testTarget

Муравьи testTarget будут запущены.

1 голос
/ 20 июля 2013

См. Пример по адресу: http://docs.codehaus.org/display/MAVENUSER/Antrun+Plugin В основном напишите ваши цели муравья в обычном build.xml. Затем определите один <target> в конфигурации, где вы динамически решаете, что такое имя buildFile и targetName, и делаете

<ant andfile="${buildFile}" target="${targetName}" inheritAll="true" inheritRefs="true"/>
0 голосов
/ 19 октября 2010

Я не слишком уверен, что по этой причине он не работает, но используемый вами синтаксис устарел.Вы должны иметь что-то вроде:

<configuration>
  <target name="myTarget">
    <!--
      Place any Ant task here. You can add anything
      you can add between <target> and </target> in a
      build.xml.
    -->    
  </target>
<configuration>

Подробнее здесь: http://maven.apache.org/plugins/maven-antrun-plugin/usage.html

...