Выполнить задачу Ant из Maven - PullRequest
       3

Выполнить задачу Ant из Maven

3 голосов
/ 17 августа 2010

Я использую Ant для создания пользовательской библиотеки jar, которую затем использую в Maven в качестве зависимости.

<dependency>
    <groupId>test-lib</groupId>
    <artifactId>test-lib</artifactId>
    <version>1.0.0system</scope>
    <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/test-lib-1.0.0.jar</systemPath>
</dependency>

Итак, в основном я сейчас делаю:

1) запустить ant для создания пользовательской библиотеки (test-lib-1.0.0.jar)
2) запустить: mvn compile, чтобы скомпилировать мой проект с использованием пользовательской библиотеки.

Есть ли у меня возможность сделать все это (упаковывать пользовательские jar и компилировать проект) из Maven?Я нашел плагин maven run, и вот мои настройки:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.4
    <executions>
        <execution>
            <phase>?????what to put here?????/phase>
            <configuration>
                <tasks>
                    <ant antfile="${basedir}/build.xml">
                        <target name="prepare-test-lib" />
                    </ant>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Но при запуске: mvn compile он жалуется на отсутствующий артефакт: test-lib-1.0.0.jar.Я использовал compile, generate-resouces, ... в теге <phase/>, но, похоже, ничего не работает.

Можно ли как-то решить эту проблему с помощью этого плагина?

1 Ответ

2 голосов
/ 18 августа 2010

При использовании подключаемого модуля Maven Antrun Maven пытается разрешить зависимости для построения ClassPaths для вызова AntRun, и, таким образом, вы сталкиваетесь с проблемой курицы и яйца: вы не можете объявить создаваемую зависимостьво время выполнения AntRun, для которого требуется выполнение этой зависимости.Это не может работать.

Я бы порекомендовал сделать ваш test-lib mavenize, включить его в сборку вашего проекта и объявить регулярную зависимость от него.Другими словами, я имею в виду переход от Ant к Maven для создания test-lib и настройки многомодульного проекта .Чтобы проиллюстрировать вещи более «визуально», что-то вроде этого:

my-project
|-- my-module
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
|-- test-lib
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
`-- pom.xml

Где my-project/pom.xml - это агрегирующий pom с <packaging>pom</packaging> и список модулей под элементом <modules>:

<modules>
  <module>my-module</module>
  <module>test-lib</module>
</modules>

И где my-module/pom.xml объявляет зависимость от артефакта test-lib:

<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>test-lib</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

Я просто даю очень общий обзор, вам нужно немного прочесть документацию длядетали, я не могу охватить все.Начните с первой книги от Sonatype (ссылка ниже).

Но это был бы правильный путь (и вы просто не должны (ab) использовать system зависимостей по объему).

Список литературы

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