Как выполнить простой вызов муравья через Maven? - PullRequest
0 голосов
/ 13 декабря 2011

Мой проект отлично работает со следующими командами:

C:\project\<project_name>\ant -lib ant\lib -buildfile applications/<sub-project-path>/ant/build.xml deploy

Однако, если я оберну эту команду либо в maven-antrun-plugin, либо в exec-maven-plugin в pom, я получу все виды проблем с путями.

Для maven-antrun-plugin, кажется, определенные свойства не могут быть загружены из-за проблем с путями. В exec-maven-plugin кажется, что цель муравья не прошла правильно.
Может кто-нибудь, пожалуйста, посоветуйте, как я могу применить это в файле pom? Очень ценится.

Это мой pom для exec:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                    <executable>ant</executable>
                    <workingDirectory>${basedir}</workingDirectory>
                    <arguments>
                        <argument>'-lib ant/lib'</argument>
                        <argument>'-buildfile $basedir/<project-path>/build.xml'</argument>
                        <argument>deploy</argument>
                    </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Не пробовал, но вы можете сделать что-то подобное, как описано в плагине maven antrun пример .

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>ant</id>
            <phase>process-resources</phase>
            <configuration>
              <target>
                <ant antfile="${basedir}/<project-path>/build.xml">
                  <target name="deploy"/>
                </ant>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

Не уверен, какую библиотеку вы хотите передать в качестве аргумента в -lib в вашем фрагменте выше, но то же самое можно объявить как plugin dependencies.

Обратите внимание, что этот плагин не заботится о существовании установки ant в вашей системе. Он загружает необходимые библиотеки муравьев.

0 голосов
/ 13 декабря 2011

Вы должны передать необходимые зависимости непосредственно в объявление плагина antrun, сразу после элемента <executions>.

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
            ...
        </executions>
        <dependencies>
          <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>${ant-contrib.version}</version>
            <exclusions>
              <exclusion>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>jasper</artifactId>
            <version>${tomcat.compile.version}</version>
          </dependency>
          <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>${java.version}.0</version>
            <scope>system</scope>
            <systemPath>${jdk.home}/tools.jar</systemPath>
          </dependency>
        </dependencies>
    </plugin>

Я включил некоторые библиотеки, которые я использую в нашем проекте, чтобы у вас был пример. Обратите внимание, что если ваша сборка использует некоторые нестандартные (то есть что-то вне java.lang) классы Java API, вы должны передать tools.jar в качестве зависимости.

Кроме того, если вы используете ant-contrib, не забудьте исключить ant в качестве зависимости, поскольку она зависит от какой-то древней версии ant, и вы получите коллизию версий.

Еще одна досадная вещь заключается в том, что зависимости, назначаемые непосредственно для выполнения плагина, не являются частью <dependencyManagement> POM, поэтому вам нужно указать точные версии. Одним из обходных путей является объявление свойств версии в том же месте, что и ваш центральный <dependencyManagement>, и использование свойств вместо жестко закодированных версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...